取决于具有聚合的项目

时间:2016-02-22 11:15:30

标签: scala sbt

我将大项目从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))

是多余和丑陋的。

1 个答案:

答案 0 :(得分:1)

如果您希望A依赖于BB-1依赖于B-2B-1(又名B-2A将是可用于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

请注意,dependsOnA不同:

来自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(); } } }等。