【发布时间】:2011-11-30 17:19:18
【问题描述】:
假设我公司的一个人有一个名为 commons 的 sbt 项目,它非常通用。该项目以传统的 sbt 方式定义:在主文件夹中,构建定义在 project/Build.scala 文件中。
现在其他人正在开发一个名为 databinding 的项目,该项目依赖于 commons。我们想以同样的方式定义这个项目,使用project/Build.scala。
我们有以下目录布局:
dev/
commons/
src/
*.scala files here...
project/
Build.scala
databinding/
src/
*.scala files here...
project/
Build.scala
如何指定databinding 需要先构建commons 并使用输出类文件?
我阅读了Multi-project builds,并为databinding 的构建定义提出了以下内容:
object MyBuild extends Build {
lazy val root = Project(id = "databinding", base = file(".")) settings (
// ... omitted
) dependsOn (commons)
lazy val common = Project(id = "commons",
base = file("../commons")
)
}
除非它不起作用:sbt 不喜欢 .. 并抛出 AssertionError。显然,commons 应该是databinding 中的一个文件夹。但是这两个项目保存在不同的 git 存储库中,我们不能嵌套。
如何正确指定这种依赖关系?
【问题讨论】: