这就是我在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。
答案 0 :(得分:0)
任务操作,doFirst
和doLast
闭包在执行阶段期间执行,但构建脚本中的所有其他内容(包括println
语句)都在执行之前执行那,在所谓的配置阶段。
由于在定义扩展属性之前使用了扩展属性,因此构建失败。
如果您确定的值仅在另一个任务中需要,您可以保留您的方法并使用任务中的值,如果它们在此任务之后执行(您可以通过dependsOn
确保)。
如果您需要配置阶段中的值且独立于任何任务(或您如何调用Gradle),请不要使用Exec
任务,而是exec
Project
对象的方法,将立即执行。