Antは、Javaベースのビルドツールです。
理論的には、makeの欠点がないmakeの一種です。
すでにmakeや,gnumake,nmake,jamなどが存在する時代に,なぜ別のビルドツールが必要なのでしょうか?
それは,複数のプラットフォームにまたがってソフトウェアを開発する時に,これらのツールのすべてが,そのオリジナルの著者が我慢できなかった限界があるからです.
makeのようなツールは,本質的にシェルベースです.
それらは,依存性の集合を評価して,シェル上で実行するようにコマンドを実行します.
これは,あなたが仕事をしているOSに対して任意のプログラムを使用したり,書くことで,これらのツールを用意に拡張できることを意味しています.
しかし,これは同時に自分で仕事をするOSや,UnixのようなOSのタイプを限定してしまうことも意味します.
さらに,Makefileは本質的に良くありません.
それを使ったことがあるすべての人は,それがいつであっても,やっかいなタブの問題に直面したことがあるでしょう.
"タブの前に一個の空白があったために,私のコマンドが実行されない!!!"とAntのオリジナルの著者は何度も言い続けてきました.
Jamのようなツールは,この問題を大部分解消してくれますが,まだ別のフォーマットを使用しているので,それを覚える必要があります.
しかし,Antは違います.
シェルベースのコマンドを拡張したモデルの代わりに,Javaのクラスの使用方法を拡張します.
シェルコマンドを記述するかわりに,設定ファイルにさまざまな実行するタスクのターゲットツリーの呼び出しをXMLベースで記述します.
それぞれのタスクは,ある特別のTaskインターフェイスを実装したオブジェクトによって実行されます.
ただし,これは`find . -name foo -exec rm {}`のようなシェルコマンドが記述可能であることによって得られる表現力を削除することになりますが,かわりにクロスプラットフォーム性が得られます.
どこでも,どんな場所でも動作するわけです.
そして,シェルコマンドの実行が本当に必要な場合には,AntはOSによって異なるコマンドを許容して,それを実行する実行規則を持っています.