我在一个目录中有多个项目,这些项目汇总在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任务来清理每个项目?
答案 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 clean
,sbt test
,sbt compile
命令时,每个命令都将针对所有聚合项目执行,而您无需创建{{1} }任务
如果需要项目特定的命令,则可以像cleanAll