Kim Stebel 的答案非常有效,但需要一个聚合项目。
(以下方案是用 sbt 1.3.x 测试的)
我想要一个更动态的解决方案。我们有一个小的 sbt 插件,无论如何我们所有的项目都会用到它。所以我添加了这个:
val allProjects = Command.single("allProjects"){ (s,task) =>
val extracted = Project extract s
import extracted._
import currentRef.{ build => curi}
val build = structure.units(curi)
build.defined.keys.map(projectId => s"$projectId/$task").foldRight(s)(_ :: _)
}
override def globalSettings: Seq[Def.Setting[_]] = {
List(
commands += allProjects,
...
)
}
对于单build.sbt
只使用commands += allProjects
添加行的第一部分
这将创建命令allProjects
并且可以像allProjects compile
.
执行顺序发生,因此它是阻塞的。
最好试试这个
经过一番挖掘,我发现,如果没有.
创建带有路径的项目,则默认情况下所有项目都聚合在根项目中。
我们的问题是,我们希望我们的根项目被命名,所以我们将它定义为
lazy val coolProjectName = project.in(file("."))
我在 build.sbt 中将其更改为:
name := "coolProjectName"
这样默认聚合仍然有效。聚合项目上的命令/任务是并行执行的。