Groovy 1.6b2のgrapeを試す
ネタ元はこれ→Groovy 1.5.7 and 1.6-beta2 released - DZone Java
id:uehajさんが訳してくれました。
●Grape・・適応的・先進的パッケージング・エンジン
Grな日々(uehajの日記) - Groovy 1.5.7と1.6-beta-2が公開
AST変換による強化として、Groovy 1.6-beta-2では「Groovy Advanced or Adaptable Packaging Engine(Groovy先進もしくは適応的パッケージング・エンジン)」のプレビューバージョンを提供します。Groovyスクリプトは、明示的に@Grab変換アノテーションあるいはGrape.grab()メソッドを呼ぶことで、特定のライブラリを要求することができます。ランタイムが必要なJARを見つけてくれます。Grapeでは、あなたは依存性のあるライブラリ無しでスクリプトを容易に配布することができ、それらのライブラリはそのスクリプトを最初に実行したときにダウンロードされます。
で,おもしろがって実際に試してみたよ。結論から言えば,
- @Grabアノテーションは動いた気配がない。:-(
- Grape.grab()メソッドやgrapeコマンドが動いた。:-)
だった。@Grabアノテーションが本命だっただけに,ちと残念(他のはGantのIvyサポートで代用が利く)。そんでも,ライブラリ管理が楽になりそうな試みは面白く思うので,生暖かく見守りたい。
せっかくだから,試したことを残す。
Groovy 1.6b2を入手。サンプル通り,こんなコードを書く。
== TestClassAnnotation.groovy == import com.jidesoft.swing.JideSplitButton @Grab(group='com.jidesoft', module='jide-oss', version='[2.2.1,2.3.0)') public class TestClassAnnotation { public static String testMethod() { return JideSplitButton.class.name } public static void main(String[] args) { println(testMethod()) } }
groovyコマンド使って実行するもエラーでコケた。:-(
> groovy -v Groovy Version: 1.6-beta-2 JVM: 1.6.0_03 > groovy TestClassAnnotation.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, C:\temp\TestClassAnnotation.groovy: 1: unable to resolve class com.jidesoft.swin g.JideSplitButton @ line 1, column 1. import com.jidesoft.swing.JideSplitButton ^ 1 error
でも,こんな(↓)スクリプトや,
import groovy.grape.* Grape.initGrape() Grape.grab([group:'org.apache.ant', module:'ant', version:'1.7.0'])
grapeコマンドは,
> grape install com.jidesoft jide-oss
ちゃんと動いて,$HOME/.groovy/grapesにローカルリポジトリが構成されたよ。でも,必要なライブラリをgrapeコマンドでローカルリポジトリに配置できてても@Grabアノテーションは効いているふうじゃなかったので,1.6b2はそうゆうもんだと理解した。:-P
ps.
ライブラリ取ってくるだけなら,Mavenはじめ,Ivyやらmvnbeans,IvyBeansとかあるけど,それが実行時(groovy)やコンパイル時(groovyc)に組み込まれるってのは画期的だと思う(@Grabアノテーションの記述が冗長とか思ったのは,ナイショだ)。
これでIDEが@Grabアノテーションに対応してくれたら,言うこと無い。:-D
JVMベースの軽量言語はいろいろあるけど,こうゆう下回りが充実してくるとGroovy以外を選択する理由がなくなるな。