当我使用参数启动构建时,我有这个'选择参数'命名" 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
有什么想法吗? 谢谢!
答案 0 :(得分:0)
RTM - String interpolation。
sh 'mvn ...'
^
that single quote should be double quote.
当然,你必须更改字符串中的许多其他引号。