【问题标题】:Jenkins wraps quotes around java system propertiesJenkins 为 java 系统属性加上引号
【发布时间】:2013-11-06 00:49:13
【问题描述】:

我正在使用 Jenkins 作为后期构建步骤执行 shell 脚本。问题是詹金斯在我传入的系统属性周围加上引号。因此应用程序看不到任何系统属性已被传入。

如果 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 执行:

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

有没有办法阻止詹金斯这样做?

谢谢。

【问题讨论】:

  • 我在将 ${WORKSPACE} 变量传递给 shell 命令时遇到了类似的问题。

标签: java testing jenkins


【解决方案1】:

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

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

-jar 和 JAR 文件名之间没有其他干预参数)。

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多