我试图找出,如何在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变量(例如,String或File type)。
答案 0 :(得分:0)
很大程度上,您只需要注意所有代码运行的阶段。当您运行gradle <some task>
命令时,Gradle有3个阶段。
init.gradle
脚本,settings.gradle
脚本,通常只是定义项目结构build.gradle
脚本重要的是,您可以将init.gradle
脚本中的代码执行延迟到后续阶段。我在下面的示例中包含了print语句,以帮助说明此代码的执行时间。
您想要的一个选项是在任务或项目的init阶段声明属性(我的示例在任务上显示它)。这样,您可以确定该属性是在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
。