我将大项目从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))
是多余和丑陋的。
答案 0 :(得分:1)
如果您希望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
与A
不同:
来自sbt docs:
聚合意味着在聚合项目上运行任务也将在聚合项目上运行它。
如果可能发生不需要B-1
的情况,您可能还需要考虑将依赖项从B
明确显示为function CBR() {
for ($i = 41; $i < 46; $i++) {
if ($('input[name=' + $i + '][id=Yes]').checked == true) {
$('input[name=39][id=Yes]').click();
}
}
}
等。