如何在Jenkins Pipeline中向Maven传递多行字符串?
解决Jenkins Pipeline多行字符串传递给Maven的报错问题
问题根源
用户输入的多行字符串包含换行符,直接在Maven命令中使用${DATA}时,换行符会将命令拆分为多行,Maven会把换行后的内容误识别为新的生命周期阶段,从而抛出未知生命周期阶段的错误。
可行解决方案
方法1:转义多行字符串中的换行符
在Jenkins Pipeline里先处理用户输入的多行内容,把换行符替换为Maven能正确解析的转义形式:
// 假设userInput是用户输入的多行字符串变量 def processedData = userInput.replace('\n', '\\n') env.DATA = processedData
执行Maven命令时,用引号完整包裹${DATA}参数值:
mvn test -Dtest="TestclassName" -DDATA="${DATA}"
方法2:直接在命令中处理并包裹参数
用Groovy的三重引号编写shell命令,同时对换行符做转义处理:
sh """ mvn test -Dtest="TestclassName" -DDATA='${userInput.replace('\n', '\\n')}' """
还原Java中的换行符
如果业务需要保留原多行格式,Java代码中获取参数后可还原换行:
String paramValue2 = System.getProperty("DATA").replace("\\n", "\n");
内容的提问来源于stack exchange,提问作者Karan
相关产品推荐
相关产品推荐

