如何为这个简单的build.gradle
脚本指定默认值:
println "Hello $build_version"
所以我没有收到错误:
A problem occurred evaluating root project 'hello_gradle'.
> Could not find property '$build_version' on root project 'hello_gradle'.
我尝试了一些运算符,检查空值等,但我认为只是对属性的引用会使它失败。我可以通过提供财产来解决这个问题,但这并不理想。
gradle -Pbuild_version=World
答案 0 :(得分:30)
if (!project.hasProperty("build_version")) {
ext.build_version = "1.0"
}
答案 1 :(得分:15)
检查属性是否存在,如果不存在,则分配默认值:
def build_version=project.properties['build_version'] ?: "nokey"
答案 2 :(得分:3)
这对我有用:
def AWS_ACCESS_KEY="nokey"
def AWS_SECRET_KEY="nokey"
if (project.hasProperty("AWS_ACCESS_KEY")) {
AWS_ACCESS_KEY=project.get("AWS_ACCESS_KEY")
}
if (project.hasProperty("AWS_SECRET_KEY")) {
AWS_SECRET_KEY=project.get("AWS_SECRET_KEY")
}
答案 3 :(得分:0)
我将此添加到我的build.gradle:
String propValue(String propName, String defValue) {
(project.hasProperty(propName) && project.getProperty(propName)) ? project.getProperty(propName) : defValue
}
然后在需要时使用propValue('build_version', 'nokey')
。
答案 4 :(得分:0)
您尝试过吗?:
println "Hello ${project.getProperty('build_version', 'default_string_value')}"
答案 5 :(得分:0)
使用三元运算符的单线:
println "Hello ${project.hasProperty('build_version') ? getProperty('build_version') : 'World'}"
gradle <your_task> -Pbuild_version=SomethingElse
答案 6 :(得分:0)
另一种简短易懂的方法:
ext.buildVersion = project.getProperties().getOrDefault("build_version", "1.0")
答案 7 :(得分:0)
从Gradle 2.13开始:
ext.buildVersion = project.findProperty('build_version') ?: '1.0'