2014年9月13日土曜日

GradleのApplicationプラグインで生成したスクリプトが動かない


GradleのApplicationプラグインで、生成したスクリプトが実行出来ませんでした。原因は、パスが通ってないことが原因でした。
生成されたスクリプトのパスを通している部分を見ると、依存関係のあるJARファイルには全てパスが通ってますが、$APP_HOME/libにパスがないじゃありませんか。これでは、依存するクラスファイルにはパスが通りません。

僕は、以下の方法でこの問題を解決しました。

build.gradleの編集

build.gradleに以下の記述を追加します。

build.gradle
10 
11 
12 
13 
14 
15 
16 
17 
task modifyscripts( dependsOn: startScripts ) {
  
  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にもパスが通るようになります。

0 件のコメント:

コメントを投稿