Gradle中$ PROPERTY的默认值

时间:2013-12-20 01:15:30

标签: java groovy gradle

如何为这个简单的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

8 个答案:

答案 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'