インターネットが使えない劣悪環境でGroovyと戯れる

今の職場がインターネットが使えず、暇な時は本当に何もすることがないのです。
ところが、ある日使用可能なソフトウェア一覧を見たり、eclipseのバンドルプラグインを流し見しているとふとこんなものを見つけた。

groovy-all-1.7.5.jar

っぉぉぉおお?!
UnitTestに使用しているSOAP-UIプラグインの中にありました。
調べてみるとSOAP-UIのTestSuiteにはGroovyで処理を挿入できるらしく。

ただ、groovycとか一切ないのでコンパイルやランタイム実行ができず、どうしようか悩んでいたところでGroovyConsole事件を思い出しました。

で、試したのがこれ。
GroovyConsole.java

import groovy.ui.Console;
public class GroovyConsole {
	public static void main(String[] args) {
		new Console(GroovyConsole.class.getClassLoader()).run();
	}
}

こんな感じでコンパイルして実行

javac -cp groovy-all-1.7.10.jar;. GroovyConsole.java
java -cp groovy-all-1.7.10.jar;. GroovyConsole

はいっ。キタコレ

Console起動にコマンドプロンプトは面倒なのでvbsを作る
GroovyConsole.vbs

CreateObject("Wscript.Shell").run "java -cp groovy-all-1.7.10.jar;. GroovyConsole",0

ついでに、groovy-all-1.7.x.jarの中にあるgroovy.icoを持ってきてショートカットアイコンにしようものなら、こんな感じで似非GroovyConsoleができた(笑)

ついでにGroovyShellも似たような要領でやってみる
GroovyShell.java

import java.io.File;
import java.io.IOException;
import groovy.lang.GroovyShell;
public class Groovysh {
	public static void main(String[] args) throws IOException {
		GroovyShell shell = new GroovyShell(Groovysh.class.getClassLoader());
		shell.evaluate(new File(args[0]));
	}
}

動かしてみる(hello.gyを作り中にはprintln "Hello! GroovyShell!"とか書いておく)

javac -cp groovy-all-1.7.10.jar;. Groovysh.java
java -cp groovy-all-1.7.10.jar;. Groovysh hello.gy
>Hello! GroovyShell!

あとはcmdファイルを書いてパスを通しておけば、下のようにGroovyScriptを実行できる

> groovysh ScriptFile

ぶっちゃけ誰得なエントリだけど、私は結構これで助かってます(精神的な意味で)

補足
GroovyConsoleもGroovyshも起動クラスのクラスローダーを設定するようにしています。
Consoleはメニューからでもライブラリは追加できますが、スクリプトはそうもいかないので、起動時のクラスパスに使用したいライブラリへのパスも通しておけばスクリプトでもサードパーティライブラリが使用可能になります。