Mavenのプロジェクトディスクリプタ

MavenはXMLプロジェクトディスクリプタを使ってプロジェクトのオブジェクトモデルを生成します。 Mavenのインターフェイスを使ってこのオブジェクトモデルを扱うことができます。 現在のところは、インターフェイスは、 Antのビルドファイル (訳註:もともとリンク先がありません。)を使ったものだけが提供されています。 将来、CLIやJMXのような他のインターフェイスが提供されるでしょう。 この文書では、Mavenのプロジェクトディスクリプタを構成するXML要素と属性を説明します。

プロジェクトディスクリプタが有効であることを確認するXMLスキーマは、 CVS リポジトリから取得できます。 さらに、統合の文書にプロジェクトディスクリプタのサンプルが示されています。 ここにプロジェクトディスクリプタの画像による表現があります。 確かに奇妙なことに、MavenのビルドシステムはMavenでビルドされています(自分たちが持っているドッグフードを食べていると信じています)。

project

<project>要素はプロジェクトに関する様々な属性を指定します。 この要素がプロジェクトディスクリプタのルート要素です。 以降の表に、子どもとなりうるすべての要素の一覧を示します。 子要素の更に子どもについては、後に続く節で記述します。

要素 説明
name プロジェクトの完全な名前です。 JavaDocのタイトルを生成するときに使用します。
id プロジェクトの短い名前です。 JARファイル配布ファイルの名前に使用します。
pomVersion Mavenプロジェクトディスクリプタの現在のバージョンです。 新しいバージョンのプロジェクトディスクリプタが利用可能になったとき、 Mavenが自動的に古いプロジェクトディスクリプタを更新することができます。 このバージョン番号はディスクリプタを作成した後に変更すべきではありません。 Mavenが自動的に更新する予定です。 さらなる情報は更新の文書を参照下さい。
currentVersion プロジェクトの現在のバージョンです。 JARファイル配布ファイルの名前に使用します。
organization プロジェクトが所属する組織です。 この要素は組織の様々な属性を記述します。
inceptionYear プロジェクトが開始した年を4桁で指定します。 JavaDocの著作権情報を生成するときに使用します。
package プロジェクトのパッケージ名です。 JavaDocを生成するときに使用します。
gumpRepositoryId (オプション)このプロジェクトが参加するGumpリポジトリのIDです (Gump integration effortに参加すると仮定します)。
shortDescription プロジェクトの簡単な説明です。 1行に限定されます。
description (オプション)プロジェクトの詳しい説明です。 通常、この要素は、説明でHTMLタグを使えるようにCDATAとして指定されます。 ウェブサイトの表紙を生成するときに使用します。
url プロジェクトのホームページのURLです。
logo プロジェクトのロゴ画像のURLです。 生成されるウェブサイトのベースディレクトリに対する相対URL (例 /images/project-logo.png)や、 絶対URL(例 http://my.corp/project-logo.png)になります。 プロジェクトの文書を生成するときに使用します。
issueTrackingUrl (オプション)プロジェクトの問題追跡システムのURLです。
siteAddress (オプション)プロジェクトのウェブサイトを提供するウェブサーバのホスト名です。 ウェブサイトを配置するときに使用します。
siteDirectory (オプション)このプロジェクトの公開ウェブサイトが存在するウェブサーバ上のディレクトリです。 ウェブサイトを配置するときに使用します。
distributionDirectory (オプション)完成した配布ファイルが公開されるウェブサーバ上のディレクトリです。 配布ファイルを配置するときに使用します。
repository プロジェクトで使用するソース設定管理システムに関する情報です。
versions (オプション)プロジェクトの以前のバージョンに関する情報を含みます。 maven:distを実行するときに使用します。
mailingLists プロジェクトのメーリングリストの情報を含みます。 ウェブサイトの表紙を生成するときに使用します。
developers プロジェクトのコミッタを記述します。 ウェブサイトのプロジェクトチームのページを生成するときに使用します。
contributors プロジェクトへの貢献者を記述します。 ウェブサイトのプロジェクトチームのページを生成するときに使用します。
dependencies プロジェクトの依存関係を記述します。 プロジェクトをビルドするときに使用します。
build プロジェクトのビルド環境を記述します。 ビルドシステムを実行するときに使用します。

organization

この要素はプロジェクトが所属する組織の様々な属性を記述します。 文書を作成するときにこれらの属性を使用します(著作権情報とリンクに使用します)。

要素 説明
name 組織の完全な名前です。
url 組織のホームページのURLです。
logo 組織のロゴ画像のURLです。 生成されるウェブサイトのベースディレクトリに対する相対URL (例 /images/org-logo.png)や、 絶対URL(例 http://my.corp/logo.png)になります。 プロジェクトの文書を生成するときに使用します。

repository

要素 説明
connection

(オプション)リポジトリとその接続方法を説明するソース設定管理システムのURLです。 特定のIDからバージョンをビルドするときに使用します。

この要素は以下の形式で指定します:

scm:<provider>:<provider-parameters>

cvsの場合、以下の形式になります:

scm:cvs:pserver:user@host:/cvs/root:module-name

pserverはCVSにアクセスするプロトコルです。 そして、user@hostは指定されたcvsホストにログインするユーザ名、 /cvs/rootはcvsのルートディレクトリ、 module-nameは実行されるcvsモジュール名です。

通常のApacheプロジェクト用の設定を例にあげます:

scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:module-name

現在のところ、サポートされるソース設定管理システムはCVSだけです。 その他のシステムはできるだけ早く追加される予定です。

url (オプション)閲覧用のCVSリポジトリのURLです。

versions

この要素は、プロジェクトの以前の各バージョンを記述します。 それぞれのバージョンはversion要素で記述します。

version

要素 説明
id バージョンに固有の識別子です。 maven:distでビルドするときにこのIDを使用します。
name このリリースが配布された外部バージョンです。 例をあげます: 1.01.1-alpha11.2-beta1.3.2などです。
tag プロジェクトのこのバージョンに関連づけられたソースコード用に、 プロジェクトで使用するバージョン管理システム(例 cvs)で付けられた名前です。

mailingLists

この要素は、プロジェクトに関係するすべてのメーリングリストを記述します。 それぞれのメーリングリストはmailingList要素と追加の要素(以降に示します)で記述します。 これらの情報は自動生成されるサイトの文書で使用します。

mailingList

要素 説明
name メーリングリストの名前です。
subscribe メーリングリストを購読するためのEメールアドレスやリンクです。 Eメールアドレスの場合は、文書の作成時に自動的にmailto:リンクが作成されます。
unsubscribe メーリングリストの購読を解除するためのEメールアドレスやリンクです。 Eメールアドレスの場合は、文書の作成時に自動的にmailto:リンクが作成されます。
archive アーカイブを閲覧するためのURLリンクです。

developers

この要素は、プロジェクトに関係するすべての開発者を記述します。 各開発者は、developer要素と追加の要素(以降に示します)で記述します。 これらの情報は自動生成されるサイトの文書で使用します。

developer

要素 説明
name 開発者の氏名です。
id 開発者のユーザ名です。
email 開発者のEメールアドレスです。
organization 開発者が所属する組織です。
roles このプロジェクトにおける開発者の役割です。 各役割は、役割名を内容に持つrole要素で記述します。

contributors

この要素は、プロジェクトに関係するすべての貢献者(開発者は除きます)を記述します。 各貢献者は、contributor要素と追加の要素(以降に示します)で記述します。 これらの情報は自動生成されるサイトの文書で使用します。

contributor

要素 説明
name 貢献者の氏名です。
email 貢献者のEメールアドレスです。
organization 貢献者が所属する組織です。
roles このプロジェクトにおける貢献者の役割です。 各役割は、役割名を内容に持つrole要素で記述します。

dependencies

この要素は、プロジェクトに関係するすべての依存関係を記述します。 各依存関係はdependency要素と追加の要素(以降に示します)で記述します。 これらの依存関係は、ビルドプロセス中にプロジェクトのクラスパスを構築するために使用します。 更に、Mavenは集中リポジトリからこれらの依存するファイルを自動的にダウンロードします。 リポジトリからダウンロードするファイル名は、id-version.jarの形式になります。 idid要素から決定し、 versionversion要素から決定します。

dependency

要素 説明
id 依存するファイルの名前です。
version 依存するファイルのバージョンです。
url 依存するファイルのホームページです。

build

この要素は、プロジェクトに関係するすべてのビルドプロパティを記述します。 プロジェクトのビルド環境を記述するいくつかの要素があります。 それぞれの要素を以下で説明します:

要素 説明
name プロジェクトの完全な名前です。 JavaDocのタイトルを生成するときに使用します。
nagEmailAddress このプロジェクトのビルド結果に基づいた通知を送信するアドレスです。 例えば持続した統合を提供する場合のように、 無人ビルドを行うツールが使うことを目的としています。 現在、maven:gump-descriptorターゲットで使用します。
unitTestSourceDirectory この要素は、プロジェクトのユニットテストのソースを含むディレクトリを指定します。 生成されたビルドシステムは、プロジェクトをテストするときに、これらのディレクトリをコンパイルします。 ユニットテストはJUnitテストフレームワークを使用する必要があります。
integrationUnitTestSourceDirectory この要素は、プロジェクトの統合ユニットテストのソースを含むディレクトリを指定します。 生成されたビルドシステムは、プロジェクトをテストするときに、これらのディレクトリをコンパイルします。 統合ユニットテストはCactusテストフレームワークを使用する必要があります。
sourceDirectory この要素は、プロジェクトのソースファイルを含むディレクトリを指定します。 生成されたビルドシステムは、プロジェクトをビルドするときに、これらのディレクトリをコンパイルします。
aspectSourceDirectory この要素は、プロジェクトのアスペクトのソースを含むディレクトリを指定します。 アスペクトが有効な場合(プロパティの文書を参照下さい)、 生成されたビルドシステムは、プロジェクトをビルドするときに、これらのディレクトリのアスペクトをコンパイルします。
jarResources この要素は、JARファイル中にパッケージするその他の追加リソースを指定します。 各リソースはjarResource要素で指定します。
jars この要素は、最終的なJARの一部としてパッケージすべき追加のJARファイルを指定します。 [TODO: この要素がjarResources要素とどのように異なるか、まだ不明です。 より明確にする必要があります] それぞれの追加のJARファイルはjar要素で指定します。
unitTestPatterns この要素は、unitTestSourceDirectory中のどのファイルがユニットテストのJavaソースファイルであるかを指定するパターンです。 それぞれのパターンはunitTestPattern要素で指定します。
integrationUnitTestPatterns この要素は、integrationUnitTestSourceDirectory中のどのファイルが統合ユニットテストのJavaソースファイルであるかを指定するパターンです。 それぞれのパターンはintegrationUnitTestPattern要素で指定します。

jarResources

要素 説明
jarResource maven:jarターゲットで作成するJARファイルにパッケージするリソースのパターンを指定します。 この値は、include = AntPatternexclude = AntPattern、 JARディスクリプタファイルのいずれかの形式で指定します。 パスは、通常${basedir}を基準とした相対パスですが、 ${maven.jarResources.basedir}プロパティで上書きすることもできます。

unitTestPatterns

要素 説明
unitTestPattern 1組のJavaソースファイルを指定するパターンです。 この値は、include = AntPatternexclude = AntPattern、 JARディスクリプタファイルのいずれかの形式で指定します。 註: これらのパターンは.classファイルではなく.javaソースを指定します。 これらのユニットテストはJUnitテストフレームワークを使用する必要があります。

integrationUnitTestPatterns

要素 説明
integrationUnitTestPattern 1組のJavaソースファイルを指定するパターンです。 この値は、include = AntPatternexclude = AntPattern、 JARディスクリプタファイルのいずれかの形式で指定します。 註: これらのパターンは.classファイルではなく.javaソースを指定します。 これらのユニットテストはCactusテストフレームワークを使用する必要があります。

jars

要素 説明
jar プロジェクトのJARにパッケージするJARファイルです。 プロジェクトのファイルに追加のJARファイルをパッケージするために使用します。 絶対パスでなければ、JARは${basedir}への相対パスになります。