Jenkins在Java系统属性周围加上引号

4

我正在使用Jenkins作为后置构建步骤来执行一个shell脚本。问题在于,Jenkins会在我传递的系统属性周围添加引号。因此,应用程序看不到任何已传递的系统属性。

如果Jenkins使用双引号将它们括起来,那就没问题了,但是单引号不行。

原始shell脚本:

java -jar -Dnetwork.configuration=Transport.uri=amqp://localhost:5672/stable,transportServer.database.driver=com.mysql.jdbc.Driver,brokerServer.database.jpa=MYSQL "${WORKSPACE}/ffiq-integration/target/PackRunner.jar" -pack "${WORKSPACE}/ffiq-integration/src/main/resources" -name JenkinsIntegrationTests

Jenkins执行以下操作:

java -jar '-Dnetwork.configuration=Transport.uri=amqp://localhost:5672/stable,transportServer.database.driver=com.mysql.jdbc.Driver,brokerServer.database.jpa=MYSQL' "${WORKSPACE}/ffiq-integration/target/PackRunner.jar" -pack "${WORKSPACE}/ffiq-integration/src/main/resources" -name JenkinsIntegrationTests

有没有办法停止Jenkins这样做?
谢谢。

我遇到了类似的问题,无法将${WORKSPACE}变量传递给shell命令。 - Yonathan W'Gebriel
1个回答

4

单引号不应该是问题,java 进程仍然会将整个 -Dname=val 视为单个选项。更可能的问题是您需要交换参数的顺序,即应该是:

java -D.... -jar ".../PackRunner.jar" <arguments-to-PackRunner-main-class>

(在 -jar 和 JAR 文件名之间没有其他中间参数)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接