Maven 2.0 のpom.xml(プロジェクト記述ファイル)についての解説です。
完全なXML定義は maven-v4_0_0.xsd を参照して下さい。
ルートになる唯一の要素(Element)です。
親プロジェクトを定義します。
<parent> <artifactId>parent-id</artifactId> <groupId>parent-group-id</groupId> <version>1.0</version> <relativePath>../parent-directory/pom.xml</relativePath> </parent>
親プロジェクトのIDを定義します。
親プロジェクトのグループIDを定義します。
親プロジェクトのバージョンを定義します。
親プロジェクトのPOMファイルが格納されたパスを相対パスで定義します。
デフォルトは ../pom.xml です。
POMファイルのバージョンを定義します。
<modelVersion>4.0.0</modelVersion>
このプロジェクトのグループIDを定義します。
プロジェクトのIDを定義します。
プロジェクトから生成する成果物の種別を定義します。
デフォルトは jar です。
プロジェクトの正式名称を定義します。
これは生成する Javadoc のタイトルとして利用されます。
プロジェクトから生成する成果物のバージョンを定義します。
プロジェクトを詳細に説明した文章を記述します。
プロジェクトのURLを記述します。
プロジェクトをビルドするために必要な(Maven)環境を定義します。
<prerequisites> <maven>2.0-beta</maven> </prerequisites>
ビルドに必要なMavenの最低限バージョンを定義します。
デフォルトは 2.0-beta です。
バグ管理システムを定義します。
<issueManagement> <system>Bugzilla</system> <url>http://example.com</url> </issueManagement>
バグ管理システムの名称を記述します。例) Bugzilla
バグ管理システムのURLを記述します。
継続的インテグレーション(?)システムを定義します。
CI管理システムの名称を記述します。例) Bugzilla
CI管理システムのURLを記述します。
ビルドが失敗したときに通知する開発者/ユーザを定義します。
以下の要素を複数定義することが出来ます。
ビルド中断時に通知する1ユーザを定義します。
通知方法を定義します。
デフォルトは mail です。
ビルドエラーを通知するかどうかを定義します。
デフォルトは true です。
ビルド失敗を通知するかどうかを定義します。
デフォルトは true です。
ビルド成功を通知するかどうかを定義します。
デフォルトは true です。
ビルド警告を通知するかどうかを定義します。
デフォルトは true です。
通知先アドレス(例えばemailアドレス)を定義します。
非推奨要素です。
通知に関する拡張情報を定義します。
プロジェクトの開始年を4桁の数字で定義します。
プロジェクトのメーリングリストに関する情報を定義します。
以下の要素を複数定義することが出来ます。
一つのメーリングリスト(以下ML)を定義します。
ML名を定義します。
MLに参加するためのemailアドレスを定義します。
MLから脱会するためのemailアドレスを定義します。
MLに投稿するためのemailアドレスを定義します。
MLのアーカイブを閲覧できるURLを定義します。
その他のアーカイブ閲覧URLを複数定義します。
以下の要素を複数定義できます。
その他のアーカイブ閲覧URLを定義します。
プロジェクト開発者を定義します。
<developers>
<developer>
<id>naoki</id>
<name>Naoki</name>
<email>naoki@limy.org</email>
<url>http://www.limy.org</url>
</developer>
</developers>
次の子要素を複数定義することが出来ます。
一人の開発者を定義します。
開発者名を定義します。
開発者のフルネームを定義します。
開発者のemailアドレスを定義します。
開発者のURLを定義します。
開発者の所属する組織名を定義します。
開発者の所属する組織のURLを定義します。
開発者の地域に関連したタイムゾーンを定義します。
-11 〜 12 の範囲で記述します。
開発者のその他各種情報を定義します。
プロジェクトへの貢献者を定義します。
次の子要素を複数定義することが出来ます。
一人の貢献者を定義します。
developer と同様の要素を持ちます。
プロジェクトに関連する全てのライセンスを定義します。
次の子要素を複数定義することが出来ます。
一つのライセンスを定義します。
ライセンスの正式名称を定義します。
ライセンス声明文の正式URLを定義します。
プロジェクトを配布するための方法を定義します。
Mavenリポジトリからダウンロード可能です。
ユーザは手動で依存関係のあるプロジェクトを
ダウンロードおよびインストールする必要があります。
ライセンスに関するコメントを記述します。
プロジェクトのソース管理システム(以下SCM)を定義します。
SCMのURLを定義します。
開発者用のURLを定義します。
現コードのタグ名を定義します。
デフォルトは HEAD です。
CVSリポジトリをブラウジング可能なURLを定義します。
プロジェクトの組織を定義します。
組織名を定義します。
組織のURLを定義します。
プロジェクトのビルドに関する情報を定義します。
ソースディレクトリを相対パスで定義します。
スクリプトソースディレクトリを相対パスで定義します。
テストソースディレクトリを相対パスで定義します。
ソースファイルの出力ディレクトリを相対パスで定義します。
テストソースファイルの出力ディレクトリを相対パスで定義します。
ビルドに使われる各種エクステンションを定義します。
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>1.0-alpha-3</version>
</extension>
</extensions>
次の子要素を複数定義することが出来ます。
一つのエクステンションを定義します。
エクステンションのグループIDを定義します。
エクステンションのIDを定義します。
エクステンションのバージョンを定義します。
プロジェクトに特定の指定が無い場合のデフォルトゴール
(Maven2においてはフェイズ)を定義します。
リソースを定義します。
次の子要素を複数定義することが出来ます。
リソースを定義します。
リソースのターゲットパスを記述します。
リソースがフィルタされるかどうかを定義します。
デフォルトは false です。
リソースが格納されるディレクトリを定義します。
絶対パスもしくは、project.xml からの相対パスで記述します。
テスト用リソースを定義します。
次の子要素を複数定義することが出来ます。
resource と同様の要素を持ちます。
ビルド後の全ファイルが格納されるディレクトリを定義します。
最終的に生成する成果物のファイル名称(拡張子を含む)を定義します。
デフォルトでは、アーティファクトID-バージョン.拡張子 となります。
フィルタリングが有効のときに使われる、フィルタプロパティファイル一覧を定義します。
次の子要素を複数定義することが出来ます。
フィルタプロパティファイルを定義します。
デフォルトプラグインの管理に関する情報を定義します。
以下の子要素を(一つだけ)持ちます。
デフォルトプラグインに関する情報を定義します。
plugins を参照して下さい。
プラグインに関する情報を定義します。
plugins を参照して下さい。
プロジェクトのプロファイルを定義します。
profiles を参照して下さい。
モジュール一覧を定義します。
モジュールとは簡単に言えば、このpom.xmlでビルドすべき
子プロジェクトのことです。
次の子要素を複数定義することが出来ます。
モジュール名を定義します。
リポジトリ一覧を定義します。
次の子要素を複数定義することが出来ます。
一つのリポジトリを定義します。
リリースファイルをダウンロードする方法を定義します。
このダウンロード方法を有効にするかどうかを定義します。
デフォルトは true です。
このダウンロードの更新頻度を定義します。always / daily / interval:XXX / never が使用できます。
※ XXX には頻度を分単位で指定します
デフォルトは daily です。
チェックサムが失敗したとき、それを失敗とするか警告とするかを定義します。fail / warn のいずれかを指定します。
リポジトリのユニークな識別子を定義します。
リポジトリの名称を記述します。
リポジトリのURLを定義します。
リポジトリレイアウト種別を定義します。legacy / default のいずれかを指定します。
デフォルトは layout です。
プラグインリポジトリ一覧を定義します。
repositories と同様の要素を持ちます。
プロジェクトを生成するのに必要な依存関係を定義します。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
次の子要素を複数定義することが出来ます。
一つの依存関係を定義します。
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
依存関係のグループIDを定義します。例) geronimo
依存関係のIDを定義します。例) geronimo-jms
依存関係のバージョンを定義します。例) 3.2.1
依存関係の種別を定義します。
デフォルトは jar です。
他にも ejb / plugin などが使用できます。
依存関係の分類名を定義します。
これは、同一のPOMに属する二つの成果物を区別するために使用されます。
依存関係のスコープを定義します。compile / provided / runtime / test / system が使用できます。
デフォルトです。全てのクラスパスに含まれます。
compile と似ていますが、それがJDKに含まれる事を示唆します。
コンパイル時のクラスパスにのみ含まれます。
コンパイルには必要無いが実行には必要ある事を示します。
実行およびテスト時のクラスパスには含まれますが、コンパイル時には含まれません。
テストのみで必要です。
テストのコンパイルおよび実行時のクラスパスに含まれます。
provided と似ていますが、これを含むJARファイルを
後述する systemPath で明示的に指定しなければならない点が異なります。
scope が system の場合のみ有効(そして必須)です。
この依存関係を持つJARファイルのパスを定義します。
この依存関係の成果物から除外する成果物の一覧を定義します。
次の子要素を複数定義することが出来ます。
除外するプロジェクトを定義します。
除外するプロジェクトのIDを定義します。
除外するプロジェクトのグループIDを定義します。
この依存関係が、このプロジェクトを使用するのにoptional(必須でない)かどうかを定義します。
デフォルトは false です。
過去のPOMリポジトリで使用するもので、現在は使用しない方がいいようです。
後述の reporting を使用しましょう。
Mavenが生成するサイトに含まれるレポートに関する情報を定義します。
以下の子要素を持ちます。
true にすると、サイトはデフォルトでレポートを生成しません。
デフォルトは false です。
レポートを生成するディレクトリを定義します。
レポートに必要なプラグイン一覧を定義します。
次の子要素を複数定義することが出来ます。
レポートに必要なプラグインを定義します。
レポートプラグインのグループIDを定義します。
レポートプラグインのIDを定義します。
レポートプラグインのバージョンを定義します。
レポートプラグインの設定を子に継承するかどうかを定義します。
レポートプラグインのその他各種設定を定義します。
複数のレポートセットを定義します。
次の子要素を複数定義することが出来ます。
プロジェクトを生成するのに必要な依存関係を定義します。
次の子要素を複数定義することが出来ます。
プロジェクトを生成するのに必要な依存関係を定義します。
dependencies を参照して下さい。
デプロイに関する情報を定義します。
mvn deploy成果物をリモートリポジトリにデプロイするのに必要な情報を定義します。
<repository> <id>ftp-repository</id> <url>ftp://repository.mycompany.com/repository</url> </repository>
スナップショットをユニークなバージョンで割り当てるかどうかを定義します。
デフォルトは true です。
この場合、タイムスタンプおよびビルド番号によってユニークなバージョンが割り振られます。false にすると、毎回同じバージョンが割り振られます。
リポジトリの名称を記述します。
リポジトリのURLを記述します。
リポジトリレイアウト種別を定義します。legacy / default のいずれかを指定します。
デフォルトは layout です。
プロジェクトから生成される成果物のスナップショットを
リモートリポジトリにデプロイするのに必要な情報を定義します。
repository と同様の要素を持ちます。
mvn site-deployプロジェクトのWebサイトファイルをデプロイするのに必要な情報を定義します。
<site> <id>website</id> <url>scp://www.mycompany.com/www/docs/project/</url> </site>
デプロイする場所を表すユニーク識別子を定義します。
デプロイする場所を表す名称を定義します。
Webサイトがデプロイされる場所のURLを定義します。
プロジェクトのダウンロードページを定義します。
成果物が新しいID/グループIDに移動したときの
リローケーション情報を定義します。
リロケーションのグループIDを定義します。
リロケーションのIDを定義します。
リロケーションのバージョンを定義します。
リロケーションの追加メッセージ(例えば、リローケーションの理由など)を定義します。
リモートリポジトリにある成果物の状態を定義します。none / converted / partner / deployed / verified の
いずれかを指定します。
デフォルトは none です。
プロジェクトのプロパティを定義します。