我们正在〜/ .gradle / gradle.properties中定义键/值属性,如下所示:
〜/ .gradle / gradle.properties :
FOO=BAR
如果我们这样做:
println "$FOO" // prints BAR
它可以工作,但是如果我们尝试使其具有以下功能:
def getEnvValueForKey = { keyStr ->
return "$keyStr"
}
getEnvValueForKey("FOO")
返回FOO
而不是BAR
我们如何做到这一点?
答案 0 :(得分:1)
您的getEnvValueForKey(key)
函数始终返回作为参数传递的变量的GString表示形式。表达式"$keyStr"
实际上是"" + keyStr.toString()
的替代形式。当您致电"$FOO"
== "" + FOO.toString()
时,也会发生同样的事情。
如果要获取在gradle.properties
文件中定义的属性,可以将函数重新定义为以下内容:
def getEnvValueForKey = { keyStr ->
return this.getProperties().getOrDefault(keyStr, null)
}
在这种情况下,呼叫getEnvValueForKey("FOO")
会得出
this.getProperties().getOrDefault("FOO", null)
如果当前作用域变量FOO
中存在变量,它将返回其值,否则返回null
。
请记住,this.getProperties()
返回在正在执行的Gradle任务的当前范围内定义的所有属性/变量的映射。