Eclipseコードビルダー(Hibernate VOからDTOを生成するため)を拡張しようとしています。そのテンプレートシステムにGroovyを使用しています。埋め込みGroovyスクリプトのクラスパスを設定するにはどうすればよいですか?
ほとんどが、それはグルーヴィーなスクリプトを作成するために使用するコードは(私はGroovyのドキュメントに見るものではない)少し奇妙ですが、それは動作します:
GroovyShell shell = new GroovyShell();
script = shell.parse(source);
すると、それ以降:
Binding binding = (bindings == null ? new Binding() : new Binding(bindings));
Script scriptInstance = InvokerHelper.createScript(script.getClass(), binding);
scriptInstance.setProperty("out", out);
scriptInstance.run();
out.flush();
これは、プロジェクト内に直接存在しないオブジェクトへの参照にヒットするまでうまくいきます。スクリプトでは、処理中のクラスのプロパティを反復処理します。これを行うと、Groovyはすべてのメソッドを調べ、メソッドパラメータのいずれかのClass定義を見つけることができない場合は、それを排除します。この場合、Hibernateへの参照が見つかるとそれは死ぬでしょうが、もっと多くの情報を得ることができると確信しています。彼らには何もする必要はありませんが、明らかに何が分かっていなくても生きることはできません。
Scriptはクラスパス情報を提供できるクラスローダーを持っていないようですので、私はGroovyShellに提供しようとしました。違いはありません。
これを修正して、Groovyインタプリタが私のプロジェクト参照JARを見つけることができる適切な方法は何ですか?
.groovyファイルで直接同様のことができますか? (すなわち、最初にそれらをコンパイルせずに) – hithwen