Jenkinsfile传递多参数执行bat maven命令时goal识别异常问题
根因分析
该问题是Windows批处理(bat)的语法特性导致:Windows的bat脚本仅识别双引号"作为字符串边界标识,不识别单引号'的字符串包裹作用。
你当前配置的命令中-Dexec.args='${params.ENVIRONMENT} ${params.SUITE}'使用单引号包裹参数,bat执行时会将单引号识别为普通字符,不会把参数内部的空格当作字符串内容的一部分,因此空格分隔的QA等参数值会被Maven识别为独立的生命周期/goal,触发报错。
修复方案
将bat命令中需要包裹的参数改为使用转义后的双引号即可,修改后的Build阶段步骤如下:
stage('Build') { steps { echo "parameter name from jenkinsfile Environment is ${params.ENVIRONMENT}" echo "parameter name from jenkinsfile SUITE is ${params.SUITE}" bat "mvn clean test-compile exec:java -Dexec.mainClass=\"com.test.mainClass\" -Dexec.args=\"${params.ENVIRONMENT} ${params.SUITE}\" -Dexec.classpathScope=test" } }
修改后可通过Jenkins执行日志查看bat命令的完整输出,确认-Dexec.args后的参数被双引号完整包裹,不会被空格拆分为独立参数即可。
内容的提问来源于stack exchange,提问作者SacTan
相关产品推荐
相关产品推荐

