Maven

maven( http://maven.apache.org/ ) がどのようなものか、少し調べてみた。Jakarta プロジェクト で開発が進められている(ソフトウェア)プロジェクトの管理(ビルド?) ツールだ。いまのところ、Javaアプリ用という感じだ。


Javaのアプリケーションのビルドは、antを使うのが定番のような気がするけど、maven は、それが無くても、ビルド/テストを行うことができるツールという感じだ。(組み合わせても使えるみたい)。ant と maven の違いを考えていたが、antは汎用的に使え、さまざまなTaskなどが存在する。また、様々なコマンドオプションを細かく制御できる。(この辺は、サイトにもうちょっとちゃんと書いてあったような...。速攻でわすれちゃったけど。)


それに比べると、maven では、基本的な作業を押さえているツールという感じだ。Javaアプリケーションの開発は、クラスファイルを作って、jar にまとめれば、ほぼ完成に近い。そして、maven では、unit テストも実行でき、そのレポートも保存される。その他、色々、設定があるみたいだが、

必要なライブラリをGet -> java -> class -> unitテスト -> jar(war)

として、そのときのビルド結果が問題ないかどうかの確認まで自動でできる感じだ。ant でやってもできるだろうけど、maven はこのような作業をする為のアプリなので、当然、antより楽にできそうだ。


Javaアプリの開発をしようとすると、様々なJarを組み合わせて使うことになる。maven ではリポジトリという所に、必要な jar を保存しておき、それらの jar を参照して、ビルドや、テストなどを行うことができる。その為、複数のjarに分割して、各自がアプリを作成し、それらを統合して利用するような形のプロジェクトの場合は、このようなツールを使うことで、どの時点でDiffがでるか(Unitテストでエラーになるか) などを、比較的簡単に見つけやすいんじゃないかな。


簡単に調べた範囲では、.zipとかtar.gzとか、配布用のファイルの作成まで、できるのか調べてみたが、分からなかった。これらは、maven 外での作業ということなのかもしれない。Source Code Repository を export すれば終わりと考えれば、まぁ、必要ないのかもしれないが。


面白そうなので、使ってみようかと考えていたのだが、最近は eclipse を利用していて、そこから ant を呼び出していたりもした。eclipse 自体は自動ビルドとかやってくれちゃうので、ant が無くても良いといえば良いのだが、細かい制御をやりたかったりするので、まだ使ってみるか悩むところだ(例えば、native2asciiの使い方とか、外部コマンドの利用とかね)。ant と maven を組み合わせて使う方法をもう少し調べる方が先かもしれない。


maven の使い方は、Getting Started を見れば大体わかった。そこに出ていないオプションなどはまだあまりわからないが。あとは、実際に使ったときに、どんなことがでて、できないかを調べていけばいいかな。