Thursday, April 8, 2010
groovy と java を混ぜた状態でビルドする build.xml の記述方法(Ant)
GroovyとJavaを混ぜて使うときに常々ビルドが面倒だと思っていたのですが、 groovyc には -j ( ジョイントコンパイラフラグ ) オプションがあり これを使えば、groovy と java が混じっていても問題なくコンパイルできる。
いままでは、ベースクラスは java で書いて、派生クラスは groovy で 実装して・・・みたいなことを律儀にやって、javac してから groovyc するように していたのだが、そういう細かいことを一切考える必要がないことが判明。
ちなみに antなど使わないで gradle を使えば済むケースも結構あるかと思います。
groovyc の例
$ mkdir -p bin
$ groovyc --sourcepath=src --classpath=lib/foo.jar -d bin `find ./src -name "*.groovy"` `find ./src -name "*.java"` -j
Ant の例
全体
ポイントのみ抜き出し
<property environment="env" />
<path id="groovy.classpath"> <fileset dir="${env.GROOVY_HOME}/embeddable/" /> </path>
<taskdef
name = "groovyc"
classname = "org.codehaus.groovy.ant.Groovyc"
classpathref = "groovy.classpath" />
<target name="compile" depends="init" description = "compile groovy to bytecode">
<mkdir dir="${build.dest}" />
<groovyc
encoding="UTF-8"
srcdir="${build.src}"
destdir="${build.dest}"
classpathref = "compile.class.path" >
<javac >
<classpath refid="compile.class.path"/>
<include name="**/*.java" />
</javac>
</groovyc>
</target>
