【问题标题】:How do I evaluate a string key in Groovy so that it outputs a value?如何在 Groovy 中评估字符串键以输出值?
【发布时间】:2018-12-22 09:20:34
【问题描述】:

我们在 ~/.gradle/gradle.properties 中定义一个键/值属性,如下所示:

~/.gradle/gradle.properties

FOO=BAR

如果我们这样做:

println "$FOO" // prints BAR

它可以工作,但是如果我们尝试使它成为一个看起来像这样的函数:

def getEnvValueForKey = { keyStr ->
    return "$keyStr"
}

getEnvValueForKey("FOO") 返回 FOO 而不是 BAR

我们如何做到这一点?

【问题讨论】:

    标签: gradle groovy android-gradle-plugin build.gradle


    【解决方案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 任务范围内定义的所有属性/变量的映射。

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多