多个项目的Sbt运行命令

时间:2019-09-05 13:02:09

标签: scala sbt

我在一个目录中有多个项目,这些项目汇总在sbt中。我想在build.sbt中为sbt编写任务,这将在每个项目中执行一些命令。

lazy val P1 = (project in file("P1")
lazy val P2 = (project in file("P2")
lazy val cleanEverywhere = taskKey[Unit]("Clean everywhere")

我应该如何编写cleancleanEverywhere任务来清理每个项目?

2 个答案:

答案 0 :(得分:2)

尝试

val cleanAll = taskKey[Unit]("Clean all projects")
cleanAll := clean.all(ScopeFilter(inAnyProject)).value

其中all

  

在过滤器选择的所有范围内评估任务

inAnyProject选择沿项目轴的所有scopes

答案 1 :(得分:0)

另一种方法是按照以下方式重组build.sbt


    lazy val root = (project in file(".")).aggregate(p1, p2)

    lazy val p1 = project.in(file("p1"))
    lazy val p2 = project.in(file("p2"))

这样,每当您运行sbt cleansbt testsbt compile命令时,每个命令都将针对所有聚合项目执行,而您无需创建{{1} }任务

如果需要项目特定的命令,则可以像cleanAll

一样运行