当我定义一个任务时,它会在多项目构建中为每个项目调用:
import sbt._
import Keys._
import IO._
object EnsimePlugin extends Plugin {
val ensime = TaskKey[Unit](
"generateEnsime",
"Generate the ENSIME configuration for this project")
override val projectSettings = Seq(
ensime := generateEnsime (
(thisProject in Test).value,
(update in Test).value
)
)
private def generateEnsime(proj: ResolvedProject, update: UpdateReport): Unit = {
println(s"called by ${proj.id}")
}
}
如何定义任务以便仅为根项目调用它?
他们通常是气馁的,但这可能是对Command
的有效使用吗?例如比如sbt-idea
插件。
答案 0 :(得分:2)
关于Aggregation的官方文档:
在进行聚合的项目中,在这种情况下是根项目, 你可以控制每个任务的聚合。
它将aggregate
键定义为值为false
的任务作为:
aggregate in update := false
使用命令进行会话处理,否则需要在任务中执行其他步骤。它并不一定意味着它在任务中更难,但我对命令与任务的理解是前者更适合于会话操作。我可能错了,但在你的特殊情况下,不需要任何命令。