GradleのApplicationプラグインで、生成したスクリプトが実行出来ませんでした。原因は、パスが通ってないことが原因でした。
生成されたスクリプトのパスを通している部分を見ると、依存関係のあるJARファイルには全てパスが通ってますが、$APP_HOME/libにパスがないじゃありませんか。これでは、依存するクラスファイルにはパスが通りません。
僕は、以下の方法でこの問題を解決しました。
build.gradleの編集
build.gradleに以下の記述を追加します。
build.gradle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | outputs.dir startScripts.outputDir doLast { def uf = file(startScripts.getUnixScript()) uf.write( uf.text.replace('CLASSPATH=$APP_HOME', 'CLASSPATH=$APP_HOME/lib:$APP_HOME') ) def wf = file(startScripts.getWindowsScript()) wf.write( wf.text.replace('CLASSPATH=%APP_HOME%', 'CLASSPATH=%APP_HOME%\\lib;%APP_HOME%') ) } } applicationDistribution.from(modifyscripts) { into "${installApp.destinationDir}/bin" } |
これで、$APP_HOME/libにもパスが通るようになります。