前回からちょっと進んで、環境のセットアップ/クリーンアップを含めた build.xml を作ってみましょう。
まず、前回定義した "compile" という Target ですが、今回は javac
タスクの destdir 属性を使用して、コンパイルした結果のクラスを build/classes
ディレクトリに置くようにしています。
また、その build/classes ディレクトリが存在していないと困るので、"init"
という Target で先に作成するようにしています。
そのため、最初の <target name="compile" のところで depends="init"
と、"init" という Target が先に行われているように、という指定を行っています。
Ant は、この depends を参照して、Target の実行結果、前後関係を解決してくれます。
<target name="compile" depends="init">
<javac srcdir="."
destdir="build/classes"
/>
<echo>compile complete!</echo>
</target>
では、その "init" Target を見てみましょう。
mkdir タスクで、ディレクトリを作成しています。
もともとそのディレクトリがあれば、何もしませんし、mkdir dir="build/classes"
と指定してあれば build ディレクトリが存在していない場合でも build ディレクトリまで含めて作成してくれる仕様になっています。
<target name="init">
<mkdir dir="build/classes"/>
<mkdir dir="dist"/>
<echo>init complete!</echo>
</target>
他には、Jar ファイルを作成する "archive"、"init" とちょうど逆に環境のクリーンアップを行うための "clean" などの Target を定義しています。
<target name="archive" depends="compile">
<jar destfile="dist/project.jar"
basedir="build/classes"
/>
<echo>archive complete!</echo>
</target>
<target name="clean" depends="init">
<delete dir="build/classes"/>
<delete dir="dist"/>
<echo>delete complete!</echo>
</target>
全文はこんなかんじになっています。
<?xml version="1.0"?>
<project name="structuredbuild" default="compile">
<target name="init">
<mkdir dir="build/classes"/>
<mkdir dir="dist"/>
<echo>init complete!</echo>
</target>
<target name="compile" depends="init">
<javac srcdir="."
destdir="build/classes"
/>
<echo>compile complete!</echo>
</target>
<target name="archive" depends="compile">
<jar destfile="dist/project.jar"
basedir="build/classes"
/>
<echo>archive complete!</echo>
</target>
<target name="clean" depends="init">
<delete dir="build/classes"/>
<delete dir="dist"/>
<echo>delete complete!</echo>
</target>
</project>

前回と同じようにデフォルトは "compile" なので、ant と実行すると以下のようになります。
(ant compile と実行しても同じ結果になります)

ちゃんと build/classes ディレクトリが作成されて、その中にコンパイルされたクラスが置かれています。

環境をリセットするために "clean" を実行してみましょう。
ant clean と実行してみます。
以下のようにディレクトリが削除されているのが確認できます。

|
|