Используйте $ {variable} в команде sh в файле jenkinsfile - PullRequest
1 голос
/ 15 марта 2019

Я пытаюсь использовать эту команду maven в Jenkinsfile

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})

Моя проблема в том, что Дженкинс неправильно экранирует мой '$ {project.version}' и выводит java.lang.NoSuchMethodError: No such DSL method '$' found among steps

Как правильно включить '$ {project.version}' в качестве строки в моей командной переменной?

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Просто замените одинарные кавычки на двойные:

def myCommand = "mvn -q -Dexec.executable=echo -Dexec.args=\"${project.version}\" --non-recursive exec:exec"
0 голосов
/ 15 марта 2019

Есть проблема с одинарной кавычкой в ​​groovy - она ​​не заменяет переменные. Это должно работать:

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

Подробнее о кавычках: В чем разница строк в одинарных или двойных кавычках в groovy?

...