如何引用另一个sbt项目的外部sbt项目?

我有以下设置的Scala应用程序和一个公共的核心库:根

-> /ApplicationA -> /project -> /build.sbt -> /CoreLibrary -> /project -> /build.sbt 

我想将ApplicationA的引用添加到Eclipse项目引用的CoreLibrary中,这样每次CoreLibrary更改ApplicationA时也都会生成。 我已经尝试了ApplicationA的build.Scala的以下内容:

  val core = Project( id = "platform-core", base = file("../CoreLibrary")) val main = Project(id = "application, base = file(".")).dependsOn(core) 

但是,编译应用程序时SBT会抱怨依赖项只能是子目录!!:

 java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA 

这似乎是完全简单的,有这个项目依赖的正确方法是什么?

你可以像这样对你的项目做一个源代码依赖项:

  lazy val core = RootProject(file("../CoreLibrary")) val main = Project(id = "application", base = file(".")).dependsOn(core) 

我有一个多模块玩构build的工作示例: https : //github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala

但我认为正确的方法(这取决于你的上下文)这样做是创build一个

  -> /project/ -> Build.scala -> /ApplicationA -> /project -> /build.sbt -> /CoreLibrary -> /project -> /build.sbt 

引用两个项目和它们之间的依赖关系。

用sbt 0.12.1似乎可以得到一个项目的简单引用:

我使用ProjectRef而不是RootProject

http://www.scala-sbt.org/0.12.1/api/sbt/ProjectRef.html

 ProjectRef(file("../util-library"), "util-library") 

sbt-eclipse也有效。

由于sbt 0.13 ,您可以直接在.sbt创build多项目定义而不需要Build.scala文件。

因此,将以下内容添加到ApplicationA / project / build.sbt就足够了。

 lazy val core = RootProject(file("../CoreLibrary")) val main = Project(id = "application", base = file(".")).dependsOn(core)