如果我说的不够清楚,我很抱歉。
我有以下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()