如何在gradle任务中设置ext属性并在任务和子项目之外使用它

时间:2017-12-25 05:01:43

标签: gradle

这就是我在gradle任务中尝试的内容

task parse(type: Exec) {
    standardOutput = new ByteArrayOutputStream()
    executable 'make'
    args "print_JDBC_CURRENT_JDK_OPT_JAR"
    doLast {
        project.ext.jdkver=standardOutput.toString()
    }
}

println project.jdkver  
  

错误:无法获取未知财产' jdkver'对于root项目' xyz'   类型为org.gradle.api.Project。

1 个答案:

答案 0 :(得分:0)

任务操作,doFirstdoLast闭包在执行阶段期间执行,但构建脚本中的所有其他内容(包括println语句)都在执行之前执行那,在所谓的配置阶段

由于在定义扩展属性之前使用了扩展属性,因此构建失败。

如果您确定的值仅在另一个任务中需要,您可以保留您的方法并使用任务中的值,如果它们在此任务之后执行(您可以通过dependsOn确保)。

如果您需要配置阶段中的值且独立于任何任务(或您如何调用Gradle),请不要使用Exec任务,而是exec Project对象的方法,将立即执行。