3

ビルド後のステップとして、Jenkinsを使用してシェルスクリプトを実行しています。問題は、jenkinsが、渡したシステムプロパティを引用符で囲んでいることです。したがって、アプリケーションは、渡されたシステムプロパティを認識できません。

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

Jenkinsがこれを行うのを止める方法はありますか?

ありがとう。

4

1 に答える 1

3

一重引用符は問題にはならないはずですが、javaプロセスは全体-Dname=valを単一のオプションと見なします。より可能性の高い問題は、引数の順序を入れ替える必要があることです。つまり、次のようにする必要があります。

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

-jar(とJARファイル名の間に他の引数はありません)。

于 2013-03-08T13:27:21.190 に答える