クラスパス上に置いておけばスクリプトファイル(*.groovy)もインポートできる

たとえば,(↓)こんなスクリプトを/tmpとかに置いておき,

== /tmp/Props.groovy ==
class Props {
  static def AAA = 'aaaa'
}

== /tmp/Const.groovy ==
class Const {
  static def BBB = 'bbbb'
}

カレントディレクトリ(例えば,$HOMEとか)に,こんなスクリプトを書く。

== test.groovy ==
import static Const.*

println Props.AAA
println BBB

普通に起動すると「Props.groovyやConst.groovyが見つからない」と怒られるけど,次のようにクラスパス(-cpオプション)を付けるとうまく行く。

> groovy -cp .:/tmp test.groovy

ポイントは「デフォルト・パッケージも読み込める」ってこと。これを利用してstartGroovyにあらかじめデフォルトのクラスパスを仕込んでしまえば,定数クラスとかMetaClassいじくるクラスとかの置き場所に使えそう。
後者のMetaClassいじくるクラスの場合は,Groovyにブートストラップみたいなのあるのが理想。

SchemaSpyとSQLiteでデータベースのメタ情報データベースを作った

なかなかどうして,使い出あるよ。
今回みたく行き当たりばったりに作るんじゃなくて,もうちっと計画的にやれてたら「参照整合性追っかけながらテストデータ作りやがれ」みたいなプログラムも作れたに違いない。


あいにく,サクっと経路探索を解決できるコードを作れる脳みそは持ち合わせていないので,あえて涙をのもう。

バッチファイルでドロップレット

バッチファイル(*.bat/*.cmd)に,なんかファイルをドラッグ&ドロップすると,そのまま引数に展開されんのね。

echo %1 > c:\temp\arg01.txt
echo %* > c:\temp\args.txt

てことは,バッチファイル経由→Groovy実行でドロップレットもできそうだ。
たぶん,相手はバッチファイルだからドロップしても処理できるファイルは9個までなんだろな。