Sbt 如何定义仅为根项目调用的任务?
当我定义一个任务时,会为多项目生成中的每个项目调用该任务:Sbt 如何定义仅为根项目调用的任务?,sbt,Sbt,当我定义一个任务时,会为多项目生成中的每个项目调用该任务: 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
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}")
}
}
我如何定义一个任务,以便只为根项目调用它
通常不鼓励使用这些命令,但这可能是对
命令的有效使用吗?e、 g.喜欢插件。来自官方文档关于:
在进行聚合的项目中,本例中的根项目,
您可以控制每个任务的聚合
它将值为false
的任务的aggregate
键范围描述为:
aggregate in update := false
使用命令进行会话处理,否则将需要在任务中执行其他步骤。这并不一定意味着在任务中更难,但我对命令与任务的理解是,前者更适合于会话操作。我可能错了,不过在您的特殊情况下,根本不需要命令。很酷,谢谢。我想我会继续将其编码为一个命令,因为我们可能希望添加命令行参数,而且sbt
的抽象API不可能意味着在这种情况下访问状态是一件有用的事情。我怀疑命令行参数是否会阻止任务完成工作。我的理解告诉我,您可以以与命令类似的方式执行任务——我甚至认为从最终用户的角度来看,这并没有什么不同。我可能弄错了…顺便说一句,你能拿出你的解决方案来完成我的回答吗?我不知道你在问什么。我使用的是命令
,这就避免了进行任何聚合的需要。您是否暗示使用命令意味着默认情况下不进行聚合?