antコンパイルターゲットの共通化
久しぶりに、antのビルドファイルを書いたので、備忘録がてらにメモ。
下のような感じで、あらかじめコンパイルする対象やライブラリをパスでまとめる。
<!--メインのコンパイル対象ディレクトリ--> <path id="compile.main.src"> <pathelement path="${dir.src.main}" /> </path> <!--テスト実行時の対象ディレクトリ--> <path id="compile.test.src"> <pathelement path="${dir.src.main}" /> <pathelement path="${dir.src.test}" /> </path> <!--ビルド時のライブラリ指定--> <path id="compile.main.classpath"> <fileset dir="${dir.lib}" includes="*.jar" /> </path>
次に、コンパイル用の共通ターゲットを用意する。javacの設定は、状況に合わせる。
1.5系のJavaでEclipseを起動している状態で、1.4系のビルドを行う場合、forkをonにしないと、正常にビルドできない為、個人的には、いつもforkはonに設定してます。
<!--コンパイル用共通ターゲット--> <target name="compile"> <mkdir dir="${dir.work}" /> <javac destdir="${dir.work}" fork="on" encoding="UTF-8" source="1.4" debug="on"> <classpath refid="${classpath.refid}" /> <src refid="${src.refid}" /> </javac> </target>
あとは、コンパイル用共通ターゲットにparamで上記で作成したパスを指定して、antcallを使って呼び出すようにする。
<target name="compile.main"> <antcall target="compile"> <param name="src.refid" value="compile.main.src"/> <param name="classpath.refid" value="compile.main.classpath"/> </antcall> </target>
それにしても、antは引数を引き渡しが面倒くさくてしょうがない。