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

问题描述 投票:0回答:1

这就是我在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  

错误:无法为org.gradle.api.Project类型的根项目'xyz'获取未知属性'jdkver'。

gradle
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.