SBT正在以随机顺序构建外部项目

时间:2014-05-26 16:04:34

标签: scala sbt

我有externl项目的项目,在我的构建文件中使用RootProject类注册。 一般来说,我在同一级别上有4个文件夹:app0app1app3app-allproject中有app-all个文件夹,其中包含以下Build.scala文件:

    import sbt._

object AppBuild extends Build {

  lazy val app2 = RootProject(file("../app0"))
  lazy val app3 = RootProject(file("../app3"))
  lazy val app1 = RootProject(file("../app1"))
  lazy val all = Seq(japp1, app2, app3)
  lazy val root = project.in(file(".")).dependsOn(all.map(ClasspathDependency(_, None)) :_*)
  // lazy val root = project.in(file(".")).aggregate(all.map(sbt.Project.projectToRef) :_*)

}

问题是,sbt正在以随机顺序构建这3个子项目。 一旦它从app1开始,另一次它以app3开始。对于aggregate和dependsOn调用都是相同的。什么是聚合规则?
我能以某种方式设定订单吗?

我希望设置类似app1.dependsOn(app3)的smth,但实际上我不能这样做,因为它是"项目参考"但不是真正的项目。

版本0.13。

- 注意:这是带有一个文件的测试样本,您可以自己创建4个文件夹,尝试从应用程序构建所有内容,并查看发生的情况。

1 个答案:

答案 0 :(得分:0)

在最新的sbt 0.13中,它就是这样做的。 lazy val `root` = (project in file(".")). aggregate(`sub-a`, `sub-b`) lazy val `sub-a` = (project in file("a")) lazy val `sub-b` = (project in file("b")). dependsOn(`sub-a`)

根据文件,http://www.scala-sbt.org/0.13/docs/Multi-Project.html#Classpath+dependencies

  

这也会在编译项目时创建项目之间的顺序