ソフトウェアエンジニアのブログ

暇つぶしに書いてます。他に技術的なことは[http://qiita.com/nsas454]に書いてますのでそちらも見てください。

Apache MavenとAntの違いについて調べてみた

Mavenの本をいただきました。
Mavenについてはいままで気になっていたのですが、本格的に使ったことがなかったし、あまり良さも理解できてなかったので、
この機会に本*1を参考に調べてみました。


Mavenについての内容を抜粋。


Apache Mavenとは何?

SWEBOK(softwea Engineerring Body Of Knowledge)の分類とは主に構成管理ツールの中のリリース・ビルドツール(Release and Build tools)に分類されます。また、さまざまなプラグインを組み込むことによりソフトウェアテストツール、ソフトウェア保守ツール、ソフトウェア品質ツールの機能なども追加することが出来ます。

実現できること
  • ライブラリの一元管理
  • ビルドプロセスの提供(ソフトウェア構成管理)
  • jUnitを使用した単体テストソフトウェアテスト
  • サイト生成機能を用いたプロジェクト情報の共有(ソフトウェア保守)
  • FindBugsを使用したバグパターン検知(ソフトウェア品質)
実現できないこと
  • 進捗の管理(単体テストレポートを用いた進捗の管理は可能)
  • Ratinal RequisiteProがそなえているような追跡支援
  • UMLの記述(ただしソースからUMLを生成するプラグインは存在する)
  • ドキュメントエディタとしての利用
  • CVSが提供するようなバージョン管理
MavenとAntの比較
ビルドツールとしての優位性
  • MavenはAntを包含している。既存のAntの資産をそのまま使用できる。
  • Mavenbuild.xmlで記述するような、どのプロジェクトでも繰り返し書くようなものは、プラグインとして用意されているため全く書く必要がない。
  • Mavenはプログラムを書くことで基本的にどのような処理でも可能である。
  • Mavenは標準のディレクトリ構成を決めているためすべてのプロジェクトで共通して使うことが出来る。
  • Mavenはライブラリ管理機能は優れている。あらゆるプロジェクトをリポジトリで一元管理し、必要なライブラリは自動的でダウンロードすることができる。
  • Mavenはプロジェクトのテンプレートを作成する機能がある。
プロジェクト管理ツールとしての特徴
  • Mavenはビルドツールのみならず、プロジェクト管理ツールでもある。
  • Maven単体テスト管理、ソースメトリクス管理、プロジェクトサイト構築、ソース変更履歴管理の機能も有する。
  • Mavenはさまざまなプラグインにより、機能拡張が容易に行える。


簡単にいうとAntで出来る作業はMavenでも同じよう出来、さらに便利に使えるということです。
とくに複数のプロジェクトを管理している場合はライブラリが一括管理できるのでさらに便利になります。
使わない手はないでしょう。

*1:すでにMaven2が出ているので内容は最新版ではありませんが入門には問題ないと思います。