gpt4 book ai didi

sbt - SBT 0.13.x 中的触发执行

转载 作者:行者123 更新时间:2023-12-04 08:52:16 25 4
gpt4 key购买 nike

我正在使用 SBT 0.13.2,我想通过执行编译任务的方式来触发我的任务。我知道我可以通过使用 triggeredBy 来实现这一点方法,如 taskDefinition.triggeredBy(compile in Compile) .

我有一个 build.sbt定义了我的自定义任务。

问题是我无法理解为什么以下内容按预期工作

val triggeredTask = taskKey[Unit]("Triggered by compile")

triggeredTask <<= Def.task {
println("TRIGGERED BY COMPILE")
}.triggeredBy(compile in Compile)

但下一个不起作用( compile 执行得很好,但我的任务没有被触发)
val triggeredTask = taskKey[Unit]("Triggered by compile")

triggeredTask := Def.task {
println("TRIGGERED BY COMPILE")
}.triggeredBy(compile in Compile).value

我的理解是 SBT 0.13 使 <<=已过时和 :=应该足够了。

最佳答案

我可能会误解你想要做什么。

如果我让你的例子更详细,它会变成这样:

val triggeredTaskKey = taskKey[Unit]("Triggered by compile")

val anonymousTask = Def.task {
println("TRIGGERED BY COMPILE")
}.triggeredBy(compile in Compile)

// I imagine the macro doing something like this
triggeredTaskKey <<= anonymousTask map (identity)

这也不会触发 compile 上的匿名任务。 .

请注意 <<=set 的荣耀版本提取位置信息。和 set只是 Def.setting(key, value, position) 的别名进而创建一个新的 Setting实例。请注意,内部创建的设置实例具有这 3 个参数的构造函数。

我认为 sbt 没有办法在没有 key 的情况下声明设置(我在这里可能错了)。但是,您似乎想要创建一个没有键的设置(触发)。

这可能是由错误引起的,我不确定 sbt 是否应该递归遍历依赖项以查找具有 triggeredBy 的任务键入他们的 info .然而,它目前不是(如 trigger method 所示。

从理论上讲,您可以使用绑定(bind)到某个任意键的正确触发器来创 build 置。我不确定那将如何工作。

关于sbt - SBT 0.13.x 中的触发执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445644/

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