You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中Map内变量引用问题:如何获取变量实际值而非字面量

Groovy动态引用变量值的解决方法

你当前代码里的"${CODEBASE}_sonar_binaries"只是生成了一个字符串字面量(比如"dcihub_sonar_binaries"),并没有去引用同名变量的实际值。要实现通过变量名动态获取对应的值,可以利用Groovy的动态特性:

方法1:使用this关键字结合字符串插值

修改else分支的代码,通过this."变量名字符串"的方式访问变量:

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

方法2:使用binding对象获取变量

如果变量是在脚本级别定义的,也可以通过binding.getVariable()方法直接按名称获取:

SonarValues.put(CODEBASE, binding.getVariable("${CODEBASE}_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, this."${CODEBASE}_sonar_binaries")
}
return SonarValues

修改后,返回的SonarValues中,"dcihub"对应的value就是dcihub_sonar_binaries变量的实际值:

'$WORKSPACE/tenants/dcihub/ui.apps/target/,$WORKSPACE/tenants/dcihub/ui.config/target/,$WORKSPACE/tenants/dcihub/ui.content/target/'

内容的提问来源于stack exchange,提问作者WhoAmI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:55:28