2013-03-08 40 views
3

我正在使用Jenkins在後期構建步驟中執行shell腳本。問題是jenkins在我傳入的系統屬性周圍引用了引號。因此,應用程序看不到任何系統屬性已被傳入。Jenkins在java系統屬性周圍引用引號

如果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 

有沒有辦法阻止詹金斯這樣做呢?

謝謝。

+0

我在傳遞$ {WORKSPACE}變量到shell命令時遇到類似的問題。 – 2014-07-25 13:03:05

回答

2

單引號不應該是一個問題,java進程仍然會看到整個-Dname=val作爲一個單一的選項。更可能出現的問題是,你需要換一輪的參數的順序,即它應該是

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

(與-jar和JAR文件名之間沒有其它介入參數)。