はじめに

Apache Ant は Java ベースのビルドツールです。理論的には、make によく似ていますが、make のしわはありません。

なぜそうなのか ?

makegnumakenmakejam、そしてその他すでに存在するビルドツールがあるのに、なぜまた別のビルドツールが必要なのか ? これらのすべてのツールは、Ant の元の著者が複数のプラットフォームでソフトウェアを開発する際に欠点に我慢できないものがあったからです。Make ライクなツールは本質的にシェルのベースのものになります。それらは一連の依存関係を評価してから、シェルで発行するのと同じコマンドを実行します。つまり、これらのツールは、作業している OS 用のプログラムを使用または記述することで簡単に拡張できます。しかし、これは作業している OS、少なくとも Unix などの OS の種類でのみ使用できることを意味します。

メイクファイルは本質的に悪でもあります。それにしばらく取り組んだことのある人なら、恐ろしいタブの問題に直面したことでしょう。「私のコマンドは、タブの前にスペースがあるので実行されていませんか !!」Ant の元の著者は、あまりにも何度もそう言いました。Jam のようなツールはこの問題を大幅に解決しましたが、それでも使用して覚える必要がある別の形式があります。

Ant は違います。シェルベースのコマンドで拡張できるモデルではなく、Ant は Java クラスを使用して拡張できます。シェルコマンドを記述するのではなく、構成ファイルは XML ベースで、さまざまなタスクが実行されるターゲットツリーが呼び出されます。各タスクは、特定の Task インターフェースを実装するオブジェクトによって実行されます。

確かに、これにより `find . -name foo -exec rm {}` などのシェルコマンドを構築できることに固有の表現力が失われますが、クロスプラットフォームで作業できるようになります - どこでも何でもです。それに、本当にシェルコマンドを実行する必要がある場合は、Ant には実行中の OS に基づいて異なるコマンドを実行できる <exec> タスクがあります。