Mavenの目標

第一の目標は、最も短い期間で開発内容の状態を完全に理解できるようにすることです。 この目標を達成するために、Mavenが扱ういくつかの領域があります:

  • ビルドプロセスの単純化
  • 単一のビルドシステムの提供
  • 良質なプロジェクト情報の提供
  • 開発プロセスの明確なガイドラインの提供
  • 詳細なテストプラクティスのガイドラインの提供
  • プロジェクト情報の明快な視覚化
  • 新機能への透過的な移行

ビルドプロセスの単純化

Mavenを使用するからといって、ベースとなるメカニズムの知識が不要になるわけではありません。 しかし、私たちが行ったJelly and Werkzのケースでは、新しいユーザを悩ませる、 あまりにひどい詳細部分の多くを気にかける必要がなくなっています。 Mavenのインストールは簡単です。 初心者、エキスパート共に同じように快適にインストール出来ることを目指しています。 また、その高い能力にもかかわらず、とても簡単にビルドを実行することが出来ます。

単一のビルドシステムの提供

Mavenでは、プロジェクトオブジェクトモデル(POM)と、 1セットのAntビルドファイルを使用して、プロジェクトをビルドします。 このAntビルドファイルはMavenを使用するすべてのプロジェクトで共有され、 その結果、単一のビルドシステムが提供されることになります。 一度Mavenプロジェクトのビルド方法に慣れれば、 すなわちすべてのMavenプロジェクトのビルド方法を知ることになります。 そして、多くのプロジェクトを進めるときに莫大な時間を節約することが出来ます。

良質なプロジェクトの情報の提供

MavenはプロジェクトのPOMとソースファイルから生成された、 プロジェクトの有益な情報のすべてを提供します。 現在、以下の情報が提供されます:

  • リポジトリ情報から直接生成された変更ログ
  • 相互参照ソース
  • ソースのメトリクス
  • メーリングリスト
  • 開発者リスト
  • 依存関係リスト
  • ユニットテストレポートとカバレッジレポート

Mavenが改良されれば提供される情報も改良されるでしょう。 Mavenのユーザはそのすべてを受け取ることが出来ます。

開発プロセスの明確なガイドラインの提供

Maven利用の一環として、開発にMavenを利用したプロジェクトの利用者たちによって集められた 開発プロセスのガイドラインにアクセスできます。 これは開発と一般的な改良が必要な領域ですが、より多くのプロジェクトがMavenを使えば、 一般的な開発プロセスに関するより多くのアイディアが集まり、 そしてすべてのMavenのユーザに広めることが出来ます。

詳細なテストプラクティスのガイドラインの提供

プロジェクトの開始時点からユニットテストを正しく始めるための簡単な方法を提供します。 プロジェクトの開発ライフサイクルの一部分として、 テストを統合するように規則を強制できます。 また、ユニットテストを統合するための一般的なパターンも提供します。 Mavenは統合テストの一般的なパターンも提供していますし、 Quilt を用いたカバレッジテストの統合を行っているところです。

プロジェクトのユニットテストの仕様、実行、レポートは、 Mavenを使った通常のビルドサイクルの一部分になっています。 JUnitフレームワークとAntでのサポートによって、 ユニットテストを実行しています。 現在のユニットテストの最良のプラクティスはガイドラインとして使用されています:

  • テスト用ソースコードを平行した別のツリーに分割する
  • テストケースの名前付け規約を使用してテストの発見と実行を行いやすくする
  • テストケースで必要な環境を設定するようにする。 テストのためにビルドをカスタマイズする必要性をなくす。

Webベースのアプリケーションのコンテナ内でのユニットテストには、 Cactusテストフレームワークを使用します。 これらのテストに対しても、基本的なユニットテストと同じ方式の統合ユニットテストが提供されます。 コンテナ内テストの予備的なサポートにはTomcat4.xベースのコンテナが含まれます。

プロジェクト情報の明快な視覚化

理解を助けるためには、該当するソースに基づくメトリクスを生成するだけでなく、 開発の状態をグラフィカルに要約して表現する必要があります。 以下はEdward R. Tufteの書籍The Visual Display of Quantitative Informationの序文からの抜粋です:

統計的なグラフの優れた点は、複雑な考えをはっきりと、正確に、 効率よく伝えられることです。 グラフィカルな表現は以下のようであるべきです:

  • データを表現する
  • 見るものを、方法論、グラフィカルな表現、グラフィックのテクノロジーなどではない、 核心部分の思考へと導く
  • データの意味をゆがめない
  • 少ない領域に多くの数値を表現する
  • 大きなデータの集合を明確にする
  • データの別の部分と比較を促す
  • 大まかな概要から細かな構造までの複数のレベルでデータを明らかにする
  • 理にかなった明白な目的を提示する: 表現、探索、テーブル化、装飾
  • データの統計的、表記的表現とよく統合する

新しい機能への透過的な移行

Mavenのアップデートは簡単なので、クライアントはMavenに追加された全ての変更を利用することができます。 すべてが1セットのビルドファイルでコントロールされるので、 単にそれらのビルドファイルとそれに伴うMavenインストールの一部であるデータ構造を更新するだけです。 ユーザは、単純にMavenをアップデートすればすべての新しい機能を使うことが出来ます。 我々は、エラーを起こしがちな手動の変更を無くすために、POMの変更を通知する簡単な方法を検討中です。