java Groovy:如何引用变量?

s4n0splo  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(117)

如何在Map中引用变量,当我这样做的时候,我只得到字面字符串dcihub_sonar_binaries,而我期望else规则的结果是dcihub_sonar_binaries的值。

dcihub_sonar_binaries = '$WORKSPACE/tenants/dcihub/ui.apps/target/,$WORKSPACE/tenants/dcihub/ui.config/target/,$WORKSPACE/tenants/dcihub/ui.content/target/'
def CODEBASE = "dcihub"
    def SonarValues = [:]
    if (CODEBASE == "platform") {
        SonarValues = ["platform": [platform_sonar_exclusion, platform_sonar_binaries]]

    } else {
        SonarValues.put(CODEBASE, "${CODEBASE}_sonar_binaries")
    }
    return SonarValues
}

当我打印出来的时候。这就是输出。

dcihub_sonar_binaries

预期产出:
'$WORKSPACE/tenants/dcihub/ui.apps/target/,$WORKSPACE/tenants/dcihub/ui.config/target/,$WORKSPACE/tenants/dcihub/ui.content/target/ '

yrdbyhpb

yrdbyhpb1#

我不知道变量是如何/在哪里声明的。
如果它是函数/方法内部的局部变量,那么就没有办法引用它--考虑一下在map中存储所有需要的值。
如果它是脚本/对象变量/属性,那么这应该可以工作:

this."${CODEBASE}_sonar_binaries"

除了this之外,还可以存在声明变量/属性的任何对象。
例如,此脚本打印Hello world!

hello_world="Hello world!"
def suffix = 'world'
println this."hello_${suffix}"

但这会失败,因为hello_world将成为隐藏的run()函数的一部分:

def hello_world="Hello world!"
def suffix = 'world'
println this."hello_${suffix}"

相关问题