gradle - Gradle:doFirst内部的变量重新分配

标签 gradle

我正在尝试使用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/

相关文章:

jenkins - 从 Jenkinsfile 调用 gradlew

android - IntelliJ IDEA的Crystax用法

java - Egit : Set gitignore to ignore all eclipse project files

java - log4j gradle配置-无法找到实现错误

Android Studio 不生成未签名的 apk

eclipse - 如何在 Eclipse 中使用 Buildship 刷新项目依赖项?

android - Gradle 显示一些错误

java - Gradle在编译时包含jar,但排除运行时

java - 如何在 Gradle 的构建脚本中将插件作为 Map 应用?

gradle - 如何让 sonarqube 依赖 jacocoTestReport?