Javaのプログラムを書いているとき,Makefile書くの面倒だなーとか思っていた
ら世の中にはAntという
ものがあるらしい. これがえらく便利. 使い方は簡単で,ソースディレクトリの
トップディレクトリに build.xml を置いて,以下のように実行するだけ.
% export ANT_HOME=/usr/local/ant
% export JAVA_HOME=/usr/local/jdk1.3.1
% ant
こうすると,変更した.javaファイルと,それに関連するものだけをコンパイル
してくれる.
build.xmlには依存関係を書いておくんだけど,直感的にわかるので簡単.
<project name="Foobar" default="compile" basedir=".">
<property name="src" location="src"/>
<property name="build" location="classes"/>
<property name="dist" value="foobar.jar"/>
<target name="compile">
<javac srcdir="${src}" destdir="${build}">
<classpath>
<pathelement location="/home/funa/SBW/lib/SBWCore.jar"/>
<pathelement location="exec/graph.jar"/>
<pathelement location="exec/sbml.jar"/>
<pathelement path="${build}"/>
</classpath>
<sourcepath>
<pathelement path="${src}"/>
</sourcepath>
<exclude name="**/depricated/*.java"/>
</javac>
</target>
<target name="dist" depends="compile">
<jar destfile="${dist}" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="org.funa.foobar.AppMain"/>
</manifest>
</jar>
</target>
<target name="clean">
<delete dir="${build}"/>
<mkdir dir="${build}"/>
</target>
<target name="rebuild" depends="clean,compile"/>
</project>
上の例では "compile" "dist" "clean" "rebuild" の4つのターゲットを指定し
ていて,ターゲットは ant の引数に使います. ちょうど "make clean"ってやる
のと同じように, "ant clean" などと実行します. それぞれのターゲットでは
以下のような指定をしています.
- "compile": javacに渡す classpath, sourcepath の指定. さらに
"depricated" という名前のディレクトリ以下のファイルは
コンパイルしないような設定も追加
- "dist": foobar.jar という JAR ファイルを作成するための設定.
ここでは MANIFEST.MF ファイルに追加したい情報も指定.
- "clean": 見ての通り. クラスファイルを保存するディレクトリを削除.
- "rebuild": "clean" してから "compile" を実行.
他にもいろいろ出来るんだけど,これだけ知っていればとりあえずは使えるかな.