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にもパスが通るようになります。

Dartで"Hello World"


Javascriptに変換してくれるプログラミング言語Dartを使って"Hello World"を表示するプログラムを作ってみます。
今回はDartの開発環境であるDart Editorを使用せずにコマンドラインで実行できるdart2jsを使用します。

Dart SDK のダウンロード

dart2jsはDart SDKに入っています。下記のサイトからダウンロードします。
https://www.dartlang.org/tools/download.html
ページの最初には、Dart Editorがあるので注意してください。Dart SDKはページの中程からダウンロードできます。
ダウンロードが完了したら、解答して、出来たディレクトリの中のbinディレクトリにパスを通します。これでdart2jsが使用できます。

プログラムを作成

main.dart
import 'dart:html';

main() {
  window.onLoad.listen( ( evt ) {
    var div = new Element.div();
    div.text = "Hello World";
    document.body.children.add( div );
  });
}

コンパイル

$ dart2js -o main.js main.dart

HTMLの作成

main.html
<html>
  <head>
    <title>main</title>
    <script type="text/javascript" src="main.js"></script>
  </head>
  <body>
  </body>
</html>

完成

main.htmlをブラウザで表示して「Hello World」が表示されていれば成功です。