我正在尝试使用gradle中的“doFirst”方法来调用方法。我的代码看起来像
task nightlyBuild(type:MavenTask) {
ext.list = 'this should change'
doFirst {
ext.list = getList()
println ext.list
}
mvnCmdLine "clean deploy -am -amd ${ext.list}"
}
mvnCmdLine是为我调用maven的类中的方法(取决于OS)
输出看起来像这样
-pl com.blah.foo:bar
mvn clean deploy -am -amd this should change
我的问题是,当我运行此命令时,println ext.list会打印出我希望看到的内容,但是当执行maven命令时,它会落在“这应该会更改”中
似乎doFirst无法控制将变量本身重新分配给新值。是否有某种特殊类型的退货?还是我不创建全局变量?
最佳答案
我现在已经弄清楚了。阶段对实现非常重要。
因此,配置发生在执行之前以及doFirst和doLast之前。所以逻辑应该看起来像
task nightlyBuild(type:MavenTask) {
ext.list = 'this should change'
doFirst {
ext.list = getList()
println ext.list
}
doLast {
mvnCmdLine "clean deploy -am -amd ${ext.list}"
}
}
基本上,mvnCmdLine是在配置阶段运行的,而在ext.list更改后则没有运行。
关于gradle - Gradle:doFirst内部的变量重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676714/