Jenkinsfile没有将参数传递给Maven

时间:2017-10-05 23:19:47

标签: java maven jenkins parameters jenkins-pipeline

当我使用参数启动构建时,我有这个'选择参数'命名" modeDebug&#34 ;;选择可以是" true"或"假" (我没有选择布尔类型,因为我有一天会添加更多选项)。我需要在我的Java代码中使用此参数,但由于某些原因,它未被检索。

我在Jenkinsfile中执行此步骤以使用参数运行测试:

sh 'mvn -gs "$MAVEN_SETTINGS" -Dta.test.suite="{\\"filter\\":\\"'+newTestList+'\\",\\"param\\":{\\"env.devEnv\\":\\"${environnement}\\",\\"env.browser\\":\\"${browser}\\",\\"env.modeDebug\\":\\"${modeDebug}\\"}}"
-Denv.devEnv="${environnement}"
-Denv.browser="${browser}"
-Denv.modeDebug="${modeDebug}"
-Dlog4j.configurationFile="${log4j2ConfigurationFile}"
-Dstatus.update.events.url="${notificationURL}"
-Dsquash.ta.external.id="${externalJobId}" -Djobname="${JOB_NAME}"
-Dhostname="${HOSTNAME}" -Dsquash.ta.conf.file="taLinkConf.properties"
-Dta.tmcallback.reportbaseurl="${JENKINS_URL}job"
-Dta.tmcallback.jobexecutionid="${BUILD_NUMBER}"
-Dta.tmcallback.reportname=Squash_TA_HTML_Report
-Dta.delete.json.file=true squash-ta:"${operation}"'

然后,在我的代码中,我调用了一些Maven参数......

protected String getScreenshotIfFail = java.lang.System.getProperty("env.modeDebug");
protected String devEnv    = java.lang.System.getProperty("env.devEnv");
protected String browser   = java.lang.System.getProperty("env.browser");

字符串devEnv和浏览器已填充但不是ggetScreenshotIfFail!

备注:在我的Jenkins文件中,echo "${modeDebug}"输出" true"或"假"。这部分正在发挥作用 在我的代码中,通过Jenkins运行测试时,System.out.println(getScreenshotIfFail);输出" null"。
在我的IDE中,我成功运行以下命令(正确填充了getScreenshotIfFail):

-Denv.modeDebug=true -Denv.devEnv=qualif -Denv.browser=chrome -Dlog4j.configurationFile=src/log4j2.xml -Dta.test.suite=squash/**.ta squash-ta:run

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

RTM - String interpolation

sh 'mvn ...'
   ^
  that single quote should be double quote.

当然,你必须更改字符串中的许多其他引号。