使用groovy在字符串中引用变量



如果我说的不够清楚,我很抱歉。

我有以下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'}" 

例如,这可以正常工作。工具的使用是OK的:

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

但是我想将'openjdk_11.0.14'的硬编码值设置为来自def jdk = jobConfig.java的值

我尝试了一些变化,但没有找到解决方案。

多谢

我如何在单引号内引用$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()

相关内容

  • 没有找到相关文章

最新更新