Gradle:在doFirst内部重新分配变量

Gradle:在doFirst内部重新分配变量,gradle,Gradle,我正在尝试使用“doFirst”方法在gradle中调用一个方法。我的代码看起来像 task nightlyBuild(type:MavenTask) { ext.list = 'this should change' doFirst { ext.list = getList() println ext.list } mvnCmdLine "clean deploy -am -amd ${ext.list}" } mvnCmdLine是类中的一个方法,

我正在尝试使用“doFirst”方法在gradle中调用一个方法。我的代码看起来像

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(取决于操作系统)

输出如下所示

-pl com.blah.foo:bar
mvn clean deploy -am -amd this should change
我的问题是,当我运行这个命令时,println ext.list会打印我希望看到的内容,但是当maven命令执行时,它会显示“this should change”


doFirst似乎无法控制在自身之外将新值重新分配给变量。有特殊类型的退货吗?还是我没有创建全局变量

我现在明白了。这些阶段对gradle来说非常重要

因此,配置发生在执行之前,在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更改后没有运行。

mvnCmdLine“clean deploy-am-amd${ext.list}”
似乎位于错误的位置。它需要进入
doFirst
或其他什么。更新:我在几周前就发现了这一点,为后代更新。我意识到在配置阶段不能首先运行doFirst,它只是一个执行阶段的操作。因此,我看到的是在我的任务之后发生的第一个Do,这是一个配置任务。