Scala 在SBT中,如何引用另一个项目的子项目?
在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
~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)