Ant の基礎の基礎 (2)

前回からちょっと進んで、環境のセットアップ/クリーンアップを含めた build.xml を作ってみましょう。


タスクの属性/ Target の依存関係

まず、前回定義した "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 タスクで、ディレクトリを作成しています。
もともとそのディレクトリがあれば、何もしませんし、mkdir dir="build/classes" と指定してあれば build ディレクトリが存在していない場合でも build ディレクトリまで含めて作成してくれる仕様になっています。

<target name="init">
 <mkdir dir="build/classes"/>
 <mkdir dir="dist"/>
 <echo>init complete!</echo>
</target>

jar タスク / delete タスク

他には、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 と実行してみます。

以下のようにディレクトリが削除されているのが確認できます。

[Top Pageに戻る]

Ads by TOK2