gpt4 book ai didi

sbt - 如何定义一个只为根项目调用的任务?

转载 作者:行者123 更新时间:2023-12-05 04:16:58 26 4
gpt4 key购买 nike

当我定义一个任务时,它会为多项目构建中的每个项目调用:

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插件。

最佳答案

来自关于 Aggregation 的官方文档:

In the project doing the aggregating, the root project in this case, you can control aggregation per-task.

它将 aggregate 键的范围描述为一个值为 false 的任务:

aggregate in update := false

使用命令进行 session 处理,否则需要在任务中执行额外的步骤。这并不一定意味着任务更难,但我对命令与任务的理解是前者更适合 session 操作。我可能是错的,尽管在您的特定情况下根本不需要命令。

关于sbt - 如何定义一个只为根项目调用的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25241691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com