使用groovy引用字符串内的变量

exdqitrt  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(202)

如果不够清楚的话,我很抱歉。
我有下面的groovy片段(来自Jenkins)

def jdk = jobConfig.java

jobConfig.env.JAVA_HOME="${tool '$jdk'}"
jobConfig.env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"

如何替换此行单引号内的$jdk变量的值?

jobConfig.env.JAVA_HOME="${tool '$jdk'}"

例如,这是没有问题的工作。工具的使用是确定的:

jobConfig.env.JAVA_HOME="${tool 'openjdk_11.0.14'}"

但我想将“openjdk_11.0.14”的硬编码值设置为来自def jdk = jobConfig.java的值
我试了几种方法,但都找不到解决办法。
多谢

6bc51xsx

6bc51xsx1#

如何在单引号内引用$jdk变量?
不清楚你的意思,但你有这样的:

jobConfig.env.JAVA_HOME="${tool '$jdk'}"

这有一些问题,但要解决如何处理单引号,其中一个问题是,您嵌套了$,这将使情况变得混乱。
如果您尝试用单引号将jdk的值括起来,可以执行以下操作:

def someJavaHomeRelatedVariable ="'${jdk}'"

请注意,引号位于{}表达式之外。
另一个问题是在该表达式中使用tool,但上面解释了如何处理用单引号括住jdk的值。

编辑

这个问题还不清楚,但也许你想做这样的事情:

def sout = new StringBuilder()
def jdk = jobConfig.java

def proc = ['tool', jdk].execute()
proc.consumeProcessOutput(sout, null)
proc.waitForOrKill(2000)

jobConfig.env.JAVA_HOME =  sout.toString()

相关问题