gpt4 book ai didi

groovy - Gradle:为什么从Exec派生的任务看不到自定义项目属性?

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

说,我们在build.gradle中设置了以下属性:

ext.PING = "PONG"

现在我们创建任务:

 task ping(type: Exec) {
commandLine 'echo', project.hasProperty('PING')
}

task pong() {
doLast {
println project.hasProperty('PING')
}
}

如果将运行 gradle pong,我们将看到 true打印,如果将运行 gradle ping,则不会。

问题是:在形成命令行命令的那一刻,我们如何解决这些问题?事实是,在 doLastdoFirst中,我们将看到评估的属性,但这无济于事-命令行应尽早形成。

最佳答案

由于命令行参数的形成是在配置阶段发生的,因此您必须检查ext.PING = "PONG"是否在ping任务之前。例如,我已经用简单的构建脚本进行了测试,例如:

ext.PING = "PONG"
task ping(type: Exec) {
commandLine 'echo', project.hasProperty('PING')
}

echo的结果为true,但适用于:
task ping(type: Exec) {
commandLine 'echo', project.hasProperty('PING')
}
ext.PING = "PONG"

结果为假。

您必须检查,是否在ping任务配置之前设置了此属性。至于 doFirstdoLast,它们是在执行阶段执行的,这意味着所有配置都已完成并且属性存在。

关于groovy - Gradle:为什么从Exec派生的任务看不到自定义项目属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33404564/

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