我正在使用Jenkins作为后期构建步骤执行shell脚本。问题是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
詹金斯执行:
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这样做?
感谢。
答案 0 :(得分:2)
单引号应该不是问题,java
进程仍会将整个-Dname=val
视为单个选项。更可能的问题是你需要交换参数的顺序,即它应该是
java -D.... -jar ".../PackRunner.jar" <arguments-to-PackRunner-main-class>
(-jar
和JAR文件名之间没有其他介入的参数)。