【问题标题】:How to get Intellij to use dependencies from SBT scala如何让 Intellij 使用来自 SBT scala 的依赖项
【发布时间】:2012-02-21 08:42:32
【问题描述】:

我试图弄清楚在使用 SBT 时,idea 将如何识别第三方依赖项。当我使用 sbt 插件 gen-idea 时,它似乎下载了所有必要的依赖项,这些依赖项按预期放入我的 ~/.ivy/ 目录中。 intellij 如何使用这些 dep?

编辑: 我注意到的一件事是,如果我创建一个新的创意项目而不仅仅是一个模块,那么这可行吗?知道为什么会这样吗?我希望能够在同一个项目中拥有多个 sbt 模块。

【问题讨论】:

  • 您是否在某处尝试过更新命令?我曾经遇到的另一个错误是我设置了 sbt 配置但没有重新启动控制台。这里只是一些提示。

标签: scala intellij-idea


【解决方案1】:

sbt-idea 插件适用于多模块 sbt 项目。我们从 sbt-0.10.0 左右开始使用它,目前在 sbt-0.11.2。看起来你已经设置好了构建文件的依赖部分,所以这里有一个示例,说明我们如何从完整规范的 Build.scala 文件中进行项目设置:

object Vcaf extends Build {
  import Resolvers._
  import Dependencies._
  import BuildSettings._

  lazy val vcafDb = Project(
    id = "vcaf-db",
    base = file("./vcaf-db"),
    dependencies = Seq(),
    settings = buildSettings ++ /* proguard */ SbtOneJar.oneJarSettings ++  Seq(libraryDependencies := dbDeps, resolvers := cseResolvers)
  )

  lazy val vcaf = Project(
    "vcaf",
    file("."),
    dependencies = Seq(vcafDb),
    aggregate = Seq(vcafDb),
    settings = buildSettings ++ Seq(libraryDependencies := vcafDeps, resolvers := cseResolvers) ++ webSettings
  )
}

在示例中,vcaf-db 项目位于 vcaf 项目文件夹内的 a 文件夹中。 vcaf-db 项目没有它自己的 build.sbt 或 Build.scala 文件。您会注意到我们正在为每个项目指定 libraryDependencies,这可能是也可能不是您缺少的链接。

正如 ChrisJamesC 所提到的,您需要从 SBT 中“重新加载”(或退出 sbt 并返回)以获取对构建定义的更改。重新加载项目后,您应该能够执行“gen-idea no-classifiers no-sbt-classifiers”并获得一个 intellij 项目,该项目具有构建文件中定义的主项目、模块和库访问权限。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    如果您想在一个 IDEA 项目中使用多个 SBT 模块,您可以使用 sbt multi-project builds(也称为子项目)。只需创建一个将模块称为子项目的主项目,然后在主项目上运行 gen-idea。要指定模块之间的依赖关系,您必须使用 Build.scala(而不是 build.sbt),如 jxstanford 的回答或这样:

    lazy val foo = Project(id = "foo", base = file("foo"))
    lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
    

    一级子项目工作正常(依赖项正确反映在生成的 IDEA 项目中),但嵌套子项目似乎不起作用。此外,子项目必须位于主项目的子目录中似乎是一个 sbt 限制(即,file("../foo") 是不允许的)。

    另见How to manage multiple interdependent modules with SBT and IntelliJ IDEA?

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2020-01-03
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多