はじめに

AntはJavaベースのビルドツールです。 理論的には、Antはmakeの一種ですが、makeの持っているような問題点を持ちません。

なぜ必要か

すでにmakeや、gnumakenmakejam などが存在するのに、なぜ別のビルドツールが必要なのでしょうか。 それは、マルチプラットフォームに対応したソフトウェアを開発する時に、 これら全てのツールには、 Antのオリジナルの開発者が我慢できなかった限界があるからです。 makeのようなツールは、本質的にシェルベースです。 依存関係を評価して、 シェル上で実行するのと同じように、コマンドを実行します。 これは、あなたが使っているOSに対して任意のプログラムを利用、 あるいは記述することで、これらのツールを容易に拡張できることを意味しています。 しかし、これは同時にあなたがOSに制限される、 少なくとも、あなたが使っている、Unix といった OS の種類を限定してしまうことも意味します。

さらに、Makefileは本質的に良くありません。 Makefileを使ったことがある人はみな、いつも、 やっかいなタブの問題に直面してきました。 "タブの前に一個の空白があったために、私のコマンドが実行されない!!!" Antのオリジナルの著者は何度も言い続けてきました。 Jamのようなツールは、この問題を大部分解消してくれますが、 まだ別のフォーマットを使用しているので、それを覚える必要があります。

Antは違います。 シェルベースのコマンドにより拡張したモデルの代わりに、 Javaクラスを使用して拡張します。 シェルコマンドを記述するかわりに、 設定ファイルを XML ベースで記述し、 様々な実行するタスクを記述したターゲットツリーを呼び出します。 それぞれのタスクは、 特定のTaskインターフェイスを実装したオブジェクトによって実行されます。

仮にAntで、 `find . -name foo -exec rm {}` といった、 シェルコマンドを記述することで得られる表現力をいくらかなくすことになっても、 クロスプラットフォーム性が得られます。 どこでも、どんな場所でも動作するわけです。 そして、本当にシェルコマンドを実行する必要がある場合、 Antは<exec>タスクを持っており、 動作するOSによって異なるコマンドを実行できます。


Copyright © 2000-2002,2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは西野亨,漆島賢二が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]