Ant の経験はありますが、Maven の経験はありません。
私の質問は、Apache Foundation が 2 つのビルド ツール (Ant と Maven) をリリースするのはなぜですか?
- 同じ Ant ツールを Maven にアップグレードできないのはなぜですか?
- Ant またはその逆で Maven を使用する利点は何ですか?
- Ant がビルド ツールとして機能する場合、Maven をビルドする理由は何ですか?
Apacheは実際には「ベンダー」ではなく、(多くの場合)他の人々/グループが寄付するオープンソースプロジェクトをホストおよびサポートする基盤です。
Antの最初のリリースは2000年に戻ったので、かなり古いツールです。Mavenは、さまざまな方法でプロジェクトの構築を処理する試みでした。Antにはまだ多くの価値があるため、Antを廃止しても意味がありません。
何かが機能しているからといって、それを改善できないわけではありません。ANT 自体は、MAKE に代わる純粋な Java として構築されました。ANTの背後にある哲学については、 ANT とはを参照してください。また、MavenチームのMavenとは何かを見て、mavenの目標が何であるかを理解してください。
個人的には、maven の依存関係管理機能から多くの価値を引き出しています。
最良のビルド ツールは、自分で作成したものです。すべてのプロジェクトのビルド プロセスは固有であり、多くの場合、個々のプロジェクトを複数の異なる方法でビルドする必要があります。
独自のビルド ツールを作成したくない場合は、以下を使用する必要があります。 Ant または Maven
Ant はビルド ツールです。Maven はビルド システムです。
これが意味することは、Maven では、ディレクトリ レイアウト、ビルド ターゲット、バージョン管理スキーム、依存関係の管理などを決定する必要がないということです。これらはすべて、ユーザーのために設計されています。また、デフォルトが気に入らない場合は、ツールに多少反対することになることも意味します。
利点は、ビルド システムに組み込みたい一般的なツール (CheckStyle、FindBugs、ユニット テスト、ユニット カバレッジ、JDepened...) のほとんどが、追加の開発作業なしですべて利用できることです。さらに、プラグインをビルドしてビルド システムを拡張するための明確に定義されたフレームワークがあります (ちなみに、Ant を使用してプラグインをビルドするのは簡単です)。また、開発者が自動ビルド システムと同じビルド情報を使用できるように、IDE との統合も優れています。
トレードオフは、ゼロから始めない限り、おそらくソース コードをリファクタリングして、Maven が期待するものと一致させる必要があるということです。すべてをゼロから構築する必要がないことのトレードオフは、Maven に自分のやりたいこと、やりたい方法を実行させる方法を理解するのに時間を費やすことがあることです。