ホーム > groovy と java を混ぜた状態でビルドする build.xml の記述...   / カテゴリ ( groovy , ant )
Thursday, April 8, 2010

groovy と java を混ぜた状態でビルドする build.xml の記述方法(Ant)

GroovyとJavaを混ぜて使うときに常々ビルドが面倒だと思っていたのですが、 groovyc には -j ( ジョイントコンパイラフラグ ) オプションがあり これを使えば、groovy と java が混じっていても問題なくコンパイルできる。

いままでは、ベースクラスは java で書いて、派生クラスは groovy で 実装して・・・みたいなことを律儀にやって、javac してから groovyc するように していたのだが、そういう細かいことを一切考える必要がないことが判明。

参考
InfoQ: Groovy 1.5の新機能

ちなみに 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>