我试图弄清楚如何在build.gradle中设置变量并在init.gradle脚本中访问该变量。
请在下面找到示例构建脚本:-
gradle.allprojects{
task CommonTasks{
println "CommonTasks - loaded"
}
CommonTasks.doFirst{
println "CommonTasks - doFirst : here i want to use variable, that is declared in project build"
}
CommonTasks.doLast{
println "CommonTasks - doLast"
}
}
也可以在下面的示例项目构建中找到:-
apply plugin : 'java'
//some-where here i want to pass a variable in CommonTasks
clean.dependsOn CommonTasks
请在init.gradle页面上建议如何访问项目build.gradle变量(例如,字符串或文件类型)。
最佳答案
在很大程度上,您只需要注意所有代码在哪个阶段中运行即可。运行gradle <some task>
命令时,Gradle分为三个阶段。
init.gradle
脚本,settings.gradle
脚本,通常只获取定义的项目结构build.gradle
脚本重要的是,您可以将
init.gradle
脚本中的代码执行延迟到以后的阶段。我在下面的示例中包含了打印语句,以帮助说明何时执行此代码。您想要的一种选择是在任务或项目的初始化阶段声明属性(我的示例在任务中显示了该属性)。这样,您可以确定属性是在
doFirst
中引用该属性时定义的。您的build.gradle只需要在配置时设置该变量。init.gradle
println 'init.gradle: In initialization phase'
gradle.allprojects {
task CommonTasks {
println 'init.gradle: In configuration phase'
ext.myVar = null
println "Value of myVar=${myVar}"
doFirst {
println 'init.gradle: In execution phase - doFirst'
println "Value of myVar=${myVar}"
}
doLast {
println 'init.gradle: In execution phase - doLast'
}
}
}
build.gradle
apply plugin: 'java'
// set the value
CommonTasks.myVar = 'buildValue'
clean.dependsOn CommonTasks
这应该在执行时打印出
myVar=buildValue
。
关于gradle - 在init.gradle任务中访问项目构建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38671420/