如何使用groovy脚本运行maven命令

时间:2017-08-28 14:53:53

标签: shell maven jenkins groovy jenkins-pipeline

我在linux-version上使用maven verison 3.3.9:" 4.4.0-43-generic"。不知何故,我可以在控制台上使用这种方式运行maven命令:

 mvn -pl '!com.mycom.hp.comp:zonegtools,!com.mycom.hpe:testbed' -P compileWithGradle,nightly,flex-debug clear

单引号内的双引号我不知道原因,但它在控制台上以这种方式工作。我有一个jenkins pipline我想使用这个命令,但它不能正常工作我使用:

sh ''' mvn -pl '"!com.mycom.hp.comp:zonegtools,!com.mycom.hpe:testbed"' -P compileWithGradle,nightly,flex-debug clear '''

或使用:

 sh """ mvn -pl '"!com.mycom.hp.comp:zonegtools,!com.mycom.hpe:testbed"' -P compileWithGradle,nightly,flex-debug clear """

结果将在"!com.mycom.hp.comp:zonegtools,!com.mycom.hpe:testbed" OR '!com.mycom.hp.comp:zonegtools,!com.mycom.hpe:testbed'

中给出

有人可以告诉我在jenkins脚本或maven目标内使用的正确方法。

3 个答案:

答案 0 :(得分:0)

您可以使用

sh 'mvn -pl "!com.mycom.hp.comp:zonegtools,!com.mycom.hpe:testbed" -P compileWithGradle,nightly,flex-debug clear'

它应该有用。

答案 1 :(得分:0)

如果使用bash shell,你必须逃脱!用反斜杠\。这很有效。

mvn -pl \!com.mycom.hp.comp:zonegtools

啊,但这不适用于Jenkins groovy代码。(2反斜杠)

sh "mvn  -pl \\!com.mycom.hp.comp:zonegtools"

这在jenkins + groovy + maven

中不起作用

MVN错误:无法在反应堆中找到所选项目:!com.mycom.hp.comp:zonegtools

答案 2 :(得分:0)

我可以像这样在groovy文件中运行mvn命令。你可以试试这个吗?

run('mvn install:install-file -Dhttps.protocols=TLSv1.2 -DgroupId=com.sample-DartifactId=sample -Dversion=2.1.0 -Dpackaging=jar -Dfile=src/main/lib/sample-2.1.0.jar -DgeneratePom=true -Dmaven.test.skip=true')