2016-08-12 91 views
2

一番搜索之後,在此期間,我發現如何納入我的build.gradle文件運行時args作爲從gradle這個運行一個可執行的JAR ,甚至如何包含JVM參數,我沒能找到這個問題的答案:包括在gradle這個可執行的JAR文件運行時ARGS

我有一個應用程序「myapp.jar」那需要一個參數「--demo模式」。我正在使用gradle應用程序distTar和distZip插件將它製作成一個可執行的jar,並帶有自己的腳本(所以我可以直接將它作爲「./myapp.jar」運行)。

我需要添加這個jar到/etc/init.d,這是我通過簡單符號鏈接jar文件到/etc/init.d目錄(和運行update-rc.d的)來完成。

現在,當我啓動系統,就像我希望應用程序運行不--demo-mode參數就好了(當不使用演示模式,即是)。

我還可以進入應用程序所有者的主目錄,設置RUN_ARGS =「 - 演示模式」並運行「./myapp.jar」,它會在演示模式下啓動。涼。 (在默認的由gradle生成的構建腳本中查看jar內部顯示$ RUN_ARGS包含在實際執行該jar的命令中的jar文件名後面)

我似乎無法做到的是/ etc/init.d使用內置的Gradle啓動腳本並應用了--demo-mode參數啓動jar文件

我知道我可以爲/etc/init.d編寫自己的啓動腳本,幷包含arg「手動」(例如「su - user -c」java -jar /home/user/myapp.jar - 演示模式「)

我也可以解構的jar文件並手動破解啓動腳本...

我甚至試過在罐子裏,所有者的.bashrc出口RUN_ARGS,希望它會得到拿起時,腳本運行...(無歡)

但有配置搖籃(或使用其他方法),使得所包含啓動腳本還包括命令行參數(S),我的方式想要傳遞給我的jar嗎?

+0

您正在使用哪個版本的Gradle,還是這很重要? –

+0

版本2.14,我不知道它是否重要:) –

回答

0

實際上,應用程序插件任務installDist,distZip或distTar將創建啓動腳本{install或distributions archive}/bin /。

這些是最終啓動應用程序的操作系統特定的shell scrpt。你可以附加你的論點。

... 
exec "\$JAVACMD" "\${JVM_OPTS[@]}" -classpath "\$CLASSPATH" ${mainClassName} "\[email protected]" 

注意腳本會將其所有參數傳遞給底層$ {mainClassName}。

相關問題