在SBT中可以depend directly on another project。这样做的好处是,在运行~compile
时,对依赖项的更改会导致重建。
现在我想依赖于另一个项目的子项目,而不依赖于它的任何兄弟姐妹。所以,例如,我有:
a/
build.sbt
b/
build.sbt
c/
build.sbt
d/
build.sbt
我希望d
依赖于b
,但不 c
。
我试过d/build.sbt
,
lazy val d = ProjectRef(file("../a"), "b")
lazy val root = project.dependsOn(d)
但这给出了
Note: Unresolved dependencies path:
com.foo:a_2.10:1.0
+- root:root_2.10:1.0
我当然能做到
lazy val d = RootProject(file("../a/b"))
除了a/build.sbt
可能包含a/b
的其他设置,这些设置不会以这种方式获取。我需要一个可以选择a/build.sbt
的参考,但也需要专门提到a/b
。
有没有办法做出这种参考?
答案 0 :(得分:0)
这对我来说只是一个愚蠢的错误。
lazy val root = project
不正确。该行代码在名为root/
的目录中创建子项目。 The correct way to refer to the root project是:
lazy val root = Project(id = "root", base = file("."))
之后,
lazy val d = ProjectRef(file("../a"), "b")
lazy val root = Project(id = "root", base = file(".")).dependsOn(d)
按预期工作。