Gradle:doFirst内部的可变重新分配

时间:2014-03-27 01:43:37

标签: 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是一个为我调用maven的类中的方法(取决于操作系统)

输出看起来像这样

-pl com.blah.foo:bar
mvn clean deploy -am -amd this should change

我的问题是,当我运行它时,println ext.list会打印出我期望看到的内容,但是当maven命令执行时,它会显示“这应该改变”

似乎doFirst无法控制在变量外部重新分配新值。有一些特殊类型的回报吗?或者我不创建全局变量?

1 个答案:

答案 0 :(得分:0)

我现在已经弄明白了。这些阶段非常重要。

因此配置在执行之前以及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后没有运行。