Scala 在SBT中,如何引用另一个项目的子项目?

Scala 在SBT中,如何引用另一个项目的子项目?,scala,sbt,Scala,Sbt,在SBT中,可以执行以下操作:。这样做的好处是,在运行~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") laz

在SBT中,可以执行以下操作:。这样做的好处是,在运行
~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


有没有办法做这样的参考呢?

这只是我的一个愚蠢的错误

lazy val root = project
这是不对的。这行代码在名为
root/
的目录中创建了一个子项目。是:

此后,

lazy val d = ProjectRef(file("../a"), "b")

lazy val root = Project(id = "root", base = file(".")).dependsOn(d)

正常工作。

不幸的是,这对我不起作用。我在
Dependencies.scala
下的
project
中有一个
Dependencies
对象,只要我使用
ProjectRef
sbt,就再也找不到其中定义的内容了。@rabejens有趣的是,听起来好像你在
build.sbt
中的
dependsOn
正在覆盖它?也许您可以在
dependencies.scala
中定义您的依赖项,作为可以从
build.sbt
中引用的变量,以便可以在一个位置添加这两个集合?
lazy val d = ProjectRef(file("../a"), "b")

lazy val root = Project(id = "root", base = file(".")).dependsOn(d)