Groovy 1.6 RC1でgrapeを試す
#Groovy1.6RC1出てます。
#→Groovy 1.6 Release Candidate is available - DZone
beta2ではダメだった@Grabアノテーションも動いたよ。ついでにファイアウォール内で動かすには,startGroovy.batの頭の方にこんなの仕込んでプロキシを有効にする(環境変数:JAVA_OPTSが重要なので,別に startGroovy.bat でなきゃダメってことはない)。
set JAVA_OPTS=-DproxySet=yes -DproxyHost=proxy.example.com -DproxyPort=8080
$HOME/.groovy/grapesを観察してると分かるけど,Ivy使ってんのね(一瞬,ivy.xmlができる)。
こんなテストコードで試してみたけど,アノテーションで指定するわけなんで,あちこちに@Grabが点在してても平気っぽい。
--- GrapeTest.groovy --- import com.jidesoft.swing.JideSplitButton @Grab(group = 'com.jidesoft', module='jide-oss', version='[2.2.1,2.3.0)') public class GrapeTest { static String testMethod() { JideSplitButton.class.name } public static void main(String[] args) { println(testMethod()) println(new GrapeTestSub().testMethod()) } } --- GrapeTestSub.groovy --- import org.junit.* @Grab(group = 'junit', module='junit', version='*') public class GrapeTestSub { String testMethod() { Assert.class.name } public static void main(String[] args) { println(testMethod()) } }
必要とするライブラリをアノテーションで指定するってのは,意欲的で面白いんだけど,いくつか気になる点もちらほら。
@Grabとimportの両方書くのが,一瞬ムダっぽく見える
pom.xmlやivy.xmlの代わりにソースに明記するからねぇ。これはスタートアップクラスとか,そうゆうのに集約するってお作法で解決できるかな。
ライブラリのバージョンチェックするタイミングがよーわからん
どうも起動する都度やってるっぽい。おかげで遅い。
これもそのうち,起動オプションとかついて解決するんだと思う。つか,そうなってくれないと使う気が起きない。
JetGroovyが対応してない
IntelliJガンガレ。:-)
いろいろ問題はあるけれど,ライブラリとってきたり,クラスパスに設定したりとか,そんなややこしいことを超越して,単に
> groovy ほにゃらら.groovy
とするだけで全てが解決するのは,なかなか感慨深いものがありますよ。