2012年2月25日土曜日

Gradle、ちょっと面倒な所

どうも。

ビルドツールではGradleを一押ししているのですが、
まだまだ開発中故に残念なところがあるので、
そのメモです。

Dependencyの指定にGStringが使えない




プロジェクトの依存ライブラリーを指定するときに、
同じGroupIdで同じバージョンを使うときに、
プロパティを設けておいて、
それを利用する方がのちのち便利です。

Groovyの場合、文字を展開するのに便利なGStringクラスがあり、
変数を置き換える際にそれを利用します。

というわけで、dependencyの指定にはGStringを利用したいわけです。



上記のbuild.gradleでは、
GAEのバージョンやSlim3のバージョンをプロパティに設定して利用しているわけですが、
こんな感じのエラーが発生します。



GStringStringにキャストできないということらしいです。

対策


仕方が無いので、カッコ悪いですが、toString()メソッドを利用します。



これはソースを読んで、パッチでも送りましょうかね…

Windowsでの問題


Macなら多分問題はないと思いますが、
Windowsでやっていると、
文字コードの問題が出てきます。

これについては、@nobeansさん『豆無日記』「Gradleで文字エンコーディングを指定する方法」に詳しく書かれています。

先ほどのbuild.gradleでWindowsでコンパイルする場合、こんなエラーが出ます(コードページは932、ソースはUTF-8)。



@nobeansさんのページに書かれたとおりに修正するとこんな感じのbuild.gradleファイルになります。



これで、なんとかうまく走りました。



ココらへんは、今年中にmilestoneが30くらいまでになるというGradleですので、対策してくれるんじゃないかななどと勝手に期待してみたり…


追記:2012/02/25 8:45

@orange_cloverさんからアドバイスがあったページ
『設計と実装の狭間で。』の「[Gradle]Gradleで文字エンコーディングを指定する方法」に書いてあった方法でも
エンコーディングの指定が可能なようです。



ところが、ひとつだけ残念なところが…



IntelliJ IDEAの10.5だとエラーになってしまうんですよね…

もちろん実行できますが…


1 件のコメント:

  1. 文字コードの指定は、こういうのもひねり出されてるようだ。

    『Gradleで文字エンコーディングを指定する方法』 http://d.hatena.ne.jp/taichitaichi/20120110/1326175750

    返信削除