如何引用另一个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)