Gradle 将变量设置为Gadle构建文件
这是一个问题的后续问题 我想“知道”在GradleGradle 将变量设置为Gadle构建文件,gradle,Gradle,这是一个问题的后续问题 我想“知道”在Gradlebuild.Gradle文件执行期间,Android应用程序是从哪个分支生成的,并将分支名称添加到我的应用程序的versionName 这是我天真的做法: apply plugin: 'android' def branch ="test"; android { compileSdkVersion 22 buildToolsVersion '22.0.0' // .. buildTypes {
build.Gradle
文件执行期间,Android应用程序是从哪个分支生成的,并将分支名称添加到我的应用程序的versionName
这是我天真的做法:
apply plugin: 'android'
def branch ="test";
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
// ..
buildTypes {
debug {
minifyEnabled false;
applicationIdSuffix ".debug"
versionNameSuffix " branch: " + "$branch"
debuggable true
signingConfig signingConfigs.debug
}
}
}
task setArgs << {
branch = "$word1"
}
task showArgs << {
println "$branch"
}
执行showArgs时,设置branch变量并在控制台中记录“mybranch”
但当我执行
gradlew setArgs -Pword1=mybranch build
分支变量仍然是默认字符串“test”,因此在versionNameSuffix
中无用
让它工作的最好方法是什么?那是因为
versionNameSuffix " branch: " + "$branch"
在配置阶段(配置所有任务时)执行
然后,当此阶段完成且gradle知道所有任务及其依赖关系时,将执行setArgs,并执行以下行:
branch = "$word1"
您可以简单地删除setArgs任务并执行以下操作
versionNameSuffix " branch: $word1"
或者,如果在未传递属性word1时希望分支的默认值为“test”:
versionNameSuffix(' branch: ' + (project.hasProperty('word1') ? project.property('word1') : 'test'))
我认为更好的方法是使用一个文件来存储分支名称——这样你就不必在调用Gradle时提供它 build.gradle:
apply plugin: 'android'
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
// ..
buildTypes {
debug {
minifyEnabled false;
applicationIdSuffix ".debug"
versionNameSuffix " branch: " + "$branch"
debuggable true
signingConfig signingConfigs.debug
}
}
}
gradle.properties
branch=mybranch
但这意味着我必须“静态地”将分支名称放入属性文件中,对吗?当然,是的-但是因为它是一个分支,所以每个分支可以有不同的
gradle.properties
。但是,您也可以为它提供将分支字符串直接传递给build命令works的-Pbranch=mybranch
,谢谢!
branch=mybranch