gpt4 book ai didi

groovy - Gradle 操作顺序

转载 作者:行者123 更新时间:2023-12-03 04:35:12 28 4
gpt4 key购买 nike

我对 gradle action order 感到困惑。
以下是我的任务:

task myTask6 {
description "Here's a task with a configuration block"
group "Some group"
doLast {
println "5"
}
println "2"
leftShift { println "4" }
doFirst {
println "3"
}
}
myTask6 << { println "1" }

在我看来,结果应该是:
1
2
3
4
5
但结果是:
2
3
5
1

发生了什么? leftShift可以分配关闭权吗?因为 myTask6.leftShift = {}是正确的。

最佳答案

解释很简单。起初 configuration phase行被执行所以 2 将被打印。然后通过( doLastdoFirst<< )添加的所有操作按添加顺序执行。所以 3 5 1 将是输出。 doFirstdoLast 时将 Action 添加到列表的开头, leftShift到最后。

现在,有什么问题:

leftShift { println "4" }

?

问题在于 Closure Task leftShift已定义,即使任务实例设置为委托(delegate)和 DELEGATE_FIRST调用配置闭包时使用解析策略(配置闭包是指在 myTask6 文字之后传递的大闭包) ClosureleftShift将被调用。要解决此问题,您需要明确定义 leftShift你需要打电话:
task myTask6 {
description "Here's a task with a configuration block"
group "Some group"
doLast {
println "5"
}
println "2"
it.leftShift { println "4" }
doFirst {
println "3"
}
}
myTask6 << { println "1" }

或者
task myTask6 { t ->
description "Here's a task with a configuration block"
group "Some group"
doLast {
println "5"
}
println "2"
t.leftShift { println "4" }
doFirst {
println "3"
}
}
myTask6 << { println "1" }

关于groovy - Gradle 操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714872/

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