繁体   English   中英

在jenkinsfile的sh命令中使用$ {variable}

[英]Use a ${variable} in a sh command in a jenkinsfile

我正在尝试在Jenkinsfile中使用此Maven命令

mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec

我将此命令放在jenkinsfile中的变量中,以稍后以这种方式使用

def myCommand = 'mvn -q -Dexec.executable=echo -Dexec.args=\"${project.version}\" --non-recursive exec:exec'

...

def version = sh(${myCommand})

我的问题是Jenkins无法正确转义我的'$ {project.version}'并输出java.lang.NoSuchMethodError: No such DSL method '$' found among steps

如何在命令变量中正确包含'$ {project.version}'作为字符串?

Groovy中的单引号存在一个问题-它不能替代变量。 这应该工作:

def myCommand = "mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec"

有关引号的更多信息: groovy中单引号或双引号内的字符串有什么区别?

只需将单引号替换为双引号即可:

def myCommand = "mvn -q -Dexec.executable=echo -Dexec.args=\"${project.version}\" --non-recursive exec:exec"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM