我把大型项目从maven转移到sbt,并遇到了一些问题。其中一个是下一个:
我有一个项目A依赖于项目B-1,B-2,B-3.(在pom.xml中,它看起来像很多依赖关系:
<dependencies>
<dependency>
B-1
</dependency>
<dependency>
B-2
</dependency>
...
</dependencies>)我还有一个项目B,它有B-1,B-2,B-3.(在pom.xml中是看起来像
<modules>
<module>B-1</module>
<module>B-2</module>
<module>B-3</module>
...
</modules>所以在我的Build.scala里我有:
lazy val B = (Project("B", file("someFile"))
aggregate(B-1, B-2, B3, ...))我认为在Build.scala中,我可以这样声明项目A:
lazy val A = (Project("A", file("doesn't matter"))
dependsOn(B))但这不管用。我不明白为什么怎么修?因为写得像:
lazy val A = (Project("A", file("doesn't matter"))
dependsOn(B-1, B-2, B3))是多余的和丑陋的。
发布于 2016-02-22 12:35:20
如果希望A依赖于B,而后者又依赖于B-1和B-2 (也称为B-1和B-2,A将可用),则需要使用dependsOn:
lazy val B1 = Project("B1", file("b1"))
lazy val B2 = Project("B2", file("b2"))
lazy val B = Project("B", file("b")).dependsOn(B1, B2)
lazy val A = Project("A", file("a")).dependsOn(B)请注意,aggregate与dependsOn不同:
来自sbt文档:
聚合意味着在聚合项目上运行任务也将在聚合项目上运行它。
如果可能发生不需要A的情况,您还可以考虑将依赖关系从B-1等显式地显示出来。
https://stackoverflow.com/questions/35552204
复制相似问题