2016-08-12 6 views
2

、で実行時の引数を含めると、 JVMの引数を含める方法、私はこの質問への答えを見つけることができませんでした:も、私は<em><em></em>からのGradle</em>実行可能なjarファイルを実行するための私のbuild.gradleファイルに実行時の引数を含める方法を発見しました、その間ずっと検索した後のGradle実行可能なjarファイル

"--demo-mode"という引数を取る "myapp.jar"というアプリがあります。私はgradleアプリケーションのdistTarとdistZipプラグインを使ってこれを独自のスクリプトを使って実行可能なjarファイルにしています(つまり、 "./myapp.jar"として直接実行できます)。

このjarファイルを/etc/init.dに追加する必要があります。これは、単にjarファイルをinit.dディレクトリにシンボリックリンクして(そしてupdate-rc.dを実行して)行っています。

システムは、(デモモードを使用していないときと同じように)システムを起動するときに、--demo-mode引数なしで正常に動作します。

また、アプリケーション所有者のホームディレクトリに移動し、RUN_ARGS = " - demo-mode"を設定して "./myapp.jar"を実行すると、デモモードで起動します。クール。 (デフォルトのgradleで生成されたビルドスクリプトでjarファイルを調べると、実際にjarファイルを実行するコマンドのjarファイル名の後ろに$ RUN_ARGSが含まれていることがわかります)

私は/ etc/init.d組み込みのGradle起動スクリプトと--demo-mode引数を指定してjarファイルを起動します。

私は自分自身の起動スクリプトを/etc/init.dに書くことができ、 "手動で"( "su - user -c" java -jar /home/user/myapp.jarのようなもの)私はまた、jarファイルを分解し、手動で起動スクリプトをハック可能性が

デモモード」)...

は、私もそれを拾っなるだろう期待して、ジャー所有者の.bashrcにRUN_ARGSを輸出しようとしたときスクリプトが実行されました...

しかし、含まれている起動スクリプトには、私が使用するコマンドライン引数も含まれるように、Gradleを設定する(または他の方法を使用する)方法があります。私の瓶に渡したいですか?

+0

どのバージョンのGradleを使用していますか、それとも重要ですか? –

+0

バージョン2.14、それが重要かどうかはわかりません:) –

答えて

0

実際には、アプリケーションプラグインのタスク、installDist、distZipまたはdistTarは、起動スクリプト{install or distributions archive}/bin /を作成します。

これらは、最後にアプリケーションを起動するOS固有のシェルのscrptです。あなたはあなたの議論を追加することができます。

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

スクリプトはすべての引数を基本の$ {mainClassName}に渡します。

関連する問題