Edited at

Groovyスクリプトの配布方法

More than 1 year has passed since last update.

※過去のブログ記事の移行

テーブルデータ入れ替えツールを配布しようとしたとき、groovy-allのjarを使おうとしてハマったネタ。


jarの場所

そもそもどこにあるのかわからなかった。。

てっきりlib配下にでもあるのかと思っていたら、そんなことはなく、embeddableフォルダ配下にあった。

※Windows8にデフォルトインストールだと以下

C:\Program Files (x86)\Groovy\Groovy-2.1.5\embeddable

groovy-all-2.1.5.jar

※同フォルダ配下にある「groovy-all-2.1.5-indy.jar」はinvokedynamicに対応したjarの模様。

invokedynamicってなんぞ?簡単に言うと効率化が上がったバイトコードみたい。


-jarだとCLASSPATH指定できない?!

alljarを使う場合の書き方は以下のようになるのですが、

java -jar lib\groovy-all-2.1.5.jar UpdateTable.groovy SOME_TABLE.csv

jarオプションの仕様でこの書き方をするとCLASSPATHが一切指定出来ません。

DBアクセスするので、CLASSPATHにJDBCのjarを通したかったのでこれだとまずくて、

色々考えましたが、普通にこんな感じのCLASSPATH指定でいけました。

java -cp .;lib\groovy-all-2.1.5.jar;lib\db2jcc4.jar groovy.ui.GroovyMain UpdateTable.groovy SOME_TABLE.csv


  • libフォルダ配下に使いたいjarを置いたのなら、「-cp .;lib*」でもいいはず。

  • groovy-all-2.1.5.jarのMainクラスを知るためにはjarを解凍して、META-INF配下のMAINFEST.MFの末尾を見ればよいです。"Main-class: groovy.ui.GroovyMain"と書いてます。

  • Groovyスクリプトに渡したい引数は、スクリプト名の後ろにスペース区切りで記入すればOK。

これでGroovyスクリプトを配布できますね!