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

时间:2017-07-21 17:13:15

标签: scala sbt

在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

有没有办法做出这种参考?

1 个答案:

答案 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)

按预期工作。