minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

Maven 2.0 のpom.xml(プロジェクト記述ファイル)についての解説です。
完全なXML定義は maven-v4_0_0.xsd を参照して下さい。

Project

ルートになる唯一の要素(Element)です。

parent

親プロジェクトを定義します。

<parent>
  <artifactId>parent-id</artifactId>
  <groupId>parent-group-id</groupId>
  <version>1.0</version>
  <relativePath>../parent-directory/pom.xml</relativePath>
</parent>
artifactId

親プロジェクトのIDを定義します。

groupId

親プロジェクトのグループIDを定義します。

version

親プロジェクトのバージョンを定義します。

relativePath

親プロジェクトのPOMファイルが格納されたパスを相対パスで定義します。
デフォルトは ../pom.xml です。

modelVersion

POMファイルのバージョンを定義します。

<modelVersion>4.0.0</modelVersion>

groupId

このプロジェクトのグループIDを定義します。

artifactId

プロジェクトのIDを定義します。

packaging

プロジェクトから生成する成果物の種別を定義します。
デフォルトは jar です。

name

プロジェクトの正式名称を定義します。
これは生成する Javadoc のタイトルとして利用されます。

version

プロジェクトから生成する成果物のバージョンを定義します。

description

プロジェクトを詳細に説明した文章を記述します。

url

プロジェクトのURLを記述します。

prerequisites

プロジェクトをビルドするために必要な(Maven)環境を定義します。

<prerequisites>
  <maven>2.0-beta</maven>
</prerequisites>
maven

ビルドに必要なMavenの最低限バージョンを定義します。
デフォルトは 2.0-beta です。

issueManagement

バグ管理システムを定義します。

<issueManagement>
  <system>Bugzilla</system>
  <url>http://example.com</url>
</issueManagement>
system

バグ管理システムの名称を記述します。例) Bugzilla

url

バグ管理システムのURLを記述します。

ciManagement

継続的インテグレーション(?)システムを定義します。

system

CI管理システムの名称を記述します。例) Bugzilla

url

CI管理システムのURLを記述します。

notifiers

ビルドが失敗したときに通知する開発者/ユーザを定義します。
以下の要素を複数定義することが出来ます。

notifier

ビルド中断時に通知する1ユーザを定義します。

type

通知方法を定義します。
デフォルトは mail です。

sendOnError

ビルドエラーを通知するかどうかを定義します。
デフォルトは true です。

sendOnFailure

ビルド失敗を通知するかどうかを定義します。
デフォルトは true です。

sendOnSuccess

ビルド成功を通知するかどうかを定義します。
デフォルトは true です。

sendOnWarning

ビルド警告を通知するかどうかを定義します。
デフォルトは true です。

address

通知先アドレス(例えばemailアドレス)を定義します。
非推奨要素です。

configuration

通知に関する拡張情報を定義します。

inceptionYear

プロジェクトの開始年を4桁の数字で定義します。

mailingLists

プロジェクトのメーリングリストに関する情報を定義します。
以下の要素を複数定義することが出来ます。

mailingList

一つのメーリングリスト(以下ML)を定義します。

name

ML名を定義します。

subscribe

MLに参加するためのemailアドレスを定義します。

unsubscribe

MLから脱会するためのemailアドレスを定義します。

post

MLに投稿するためのemailアドレスを定義します。

archive

MLのアーカイブを閲覧できるURLを定義します。

otherArchives

その他のアーカイブ閲覧URLを複数定義します。
以下の要素を複数定義できます。

otherArchive

その他のアーカイブ閲覧URLを定義します。

developers

プロジェクト開発者を定義します。

<developers>
  <developer>
    <id>naoki</id>
    <name>Naoki</name>
    <email>naoki@limy.org</email>
    <url>http://www.limy.org</url>
  </developer>
</developers>

次の子要素を複数定義することが出来ます。

developer

一人の開発者を定義します。

id

開発者名を定義します。

name

開発者のフルネームを定義します。

email

開発者のemailアドレスを定義します。

url

開発者のURLを定義します。

organization

開発者の所属する組織名を定義します。

organizationUrl

開発者の所属する組織のURLを定義します。

roles

開発者のロール(役割)を定義します。
次の子要素を複数定義することが出来ます。

role

ロール名を定義します。

timezone

開発者の地域に関連したタイムゾーンを定義します。
-11 〜 12 の範囲で記述します。

properties

開発者のその他各種情報を定義します。

contributors

プロジェクトへの貢献者を定義します。
次の子要素を複数定義することが出来ます。

contributor

一人の貢献者を定義します。
developer と同様の要素を持ちます。

licenses

プロジェクトに関連する全てのライセンスを定義します。
次の子要素を複数定義することが出来ます。

license

一つのライセンスを定義します。

name

ライセンスの正式名称を定義します。

url

ライセンス声明文の正式URLを定義します。

distribution

プロジェクトを配布するための方法を定義します。

  • repo

    Mavenリポジトリからダウンロード可能です。

  • manual

    ユーザは手動で依存関係のあるプロジェクトを
    ダウンロードおよびインストールする必要があります。

comments

ライセンスに関するコメントを記述します。

scm

プロジェクトのソース管理システム(以下SCM)を定義します。

connection

SCMのURLを定義します。

developerConnection

開発者用のURLを定義します。

tag

現コードのタグ名を定義します。
デフォルトは HEAD です。

url

CVSリポジトリをブラウジング可能なURLを定義します。

organization

プロジェクトの組織を定義します。

name

組織名を定義します。

url

組織のURLを定義します。

build

プロジェクトのビルドに関する情報を定義します。

sourceDirectory

ソースディレクトリを相対パスで定義します。

scriptSourceDirectory

スクリプトソースディレクトリを相対パスで定義します。

testSourceDirectory

テストソースディレクトリを相対パスで定義します。

outputDirectory

ソースファイルの出力ディレクトリを相対パスで定義します。

testOutputDirectory

テストソースファイルの出力ディレクトリを相対パスで定義します。

extensions

ビルドに使われる各種エクステンションを定義します。

<extensions>
  <extension>
    <groupId>org.apache.maven.wagon</groupId>
     <artifactId>wagon-ftp</artifactId>
     <version>1.0-alpha-3</version>
  </extension>
</extensions>

次の子要素を複数定義することが出来ます。

extenstion

一つのエクステンションを定義します。

groupId

エクステンションのグループIDを定義します。

artifactId

エクステンションのIDを定義します。

version

エクステンションのバージョンを定義します。

defaultGoal

プロジェクトに特定の指定が無い場合のデフォルトゴール
(Maven2においてはフェイズ)を定義します。

resources

リソースを定義します。
次の子要素を複数定義することが出来ます。

resource

リソースを定義します。

targetPath

リソースのターゲットパスを記述します。

filtering

リソースがフィルタされるかどうかを定義します。
デフォルトは false です。

directory

リソースが格納されるディレクトリを定義します。
絶対パスもしくは、project.xml からの相対パスで記述します。

includes

ターゲットパスがディレクトリのとき、
リソースに含むファイル名を定義します。
次の子要素を複数定義することが出来ます。

include

リソースに含むファイル名を定義します。

excludes

ターゲットパスがディレクトリのとき、
リソースに含まないファイル名を定義します。
次の子要素を複数定義することが出来ます。

exclude

リソースに含まないファイル名を定義します。

testResources

テスト用リソースを定義します。
次の子要素を複数定義することが出来ます。

testResource

resource と同様の要素を持ちます。

directory

ビルド後の全ファイルが格納されるディレクトリを定義します。

finalName

最終的に生成する成果物のファイル名称(拡張子を含む)を定義します。
デフォルトでは、アーティファクトID-バージョン.拡張子 となります。

filters

フィルタリングが有効のときに使われる、フィルタプロパティファイル一覧を定義します。
次の子要素を複数定義することが出来ます。

filter

フィルタプロパティファイルを定義します。

pluginManagement

デフォルトプラグインの管理に関する情報を定義します。
以下の子要素を(一つだけ)持ちます。

plugins

デフォルトプラグインに関する情報を定義します。
plugins を参照して下さい。

plugins

プラグインに関する情報を定義します。
plugins を参照して下さい。

profiles

プロジェクトのプロファイルを定義します。
profiles を参照して下さい。

modules

モジュール一覧を定義します。
モジュールとは簡単に言えば、このpom.xmlでビルドすべき
子プロジェクトのことです。

次の子要素を複数定義することが出来ます。

module

モジュール名を定義します。

repositories

リポジトリ一覧を定義します。
次の子要素を複数定義することが出来ます。

repository

一つのリポジトリを定義します。

releases

リリースファイルをダウンロードする方法を定義します。

enabled

このダウンロード方法を有効にするかどうかを定義します。
デフォルトは true です。

updatePolicy

このダウンロードの更新頻度を定義します。
always / daily / interval:XXX / never が使用できます。
XXX には頻度を分単位で指定します
デフォルトは daily です。

checksumPolicy

チェックサムが失敗したとき、それを失敗とするか警告とするかを定義します。
fail / warn のいずれかを指定します。

snapshots

スナップショットファイルをダウンロードする方法を定義します。
releases と同様の要素を持ちます。

id

リポジトリのユニークな識別子を定義します。

name

リポジトリの名称を記述します。

url

リポジトリのURLを定義します。

layout

リポジトリレイアウト種別を定義します。
legacy / default のいずれかを指定します。
デフォルトは layout です。

pluginRepositories

プラグインリポジトリ一覧を定義します。
repositories と同様の要素を持ちます。

dependencies

プロジェクトを生成するのに必要な依存関係を定義します。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>

次の子要素を複数定義することが出来ます。

dependency

一つの依存関係を定義します。

<dependency>
  <groupId>javax.sql</groupId>
  <artifactId>jdbc-stdext</artifactId>
  <version>2.0</version>
  <scope>system</scope>
  <systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
groupId

依存関係のグループIDを定義します。例) geronimo

artifactId

依存関係のIDを定義します。例) geronimo-jms

version

依存関係のバージョンを定義します。例) 3.2.1

type

依存関係の種別を定義します。
デフォルトは jar です。
他にも ejb / plugin などが使用できます。

classifier

依存関係の分類名を定義します。
これは、同一のPOMに属する二つの成果物を区別するために使用されます。

scope

依存関係のスコープを定義します。
compile / provided / runtime / test / system が使用できます。

  • compile

    デフォルトです。全てのクラスパスに含まれます。

  • provided

    compile と似ていますが、それがJDKに含まれる事を示唆します。
    コンパイル時のクラスパスにのみ含まれます。

  • runtime

    コンパイルには必要無いが実行には必要ある事を示します。
    実行およびテスト時のクラスパスには含まれますが、コンパイル時には含まれません。

  • test

    テストのみで必要です。
    テストのコンパイルおよび実行時のクラスパスに含まれます。

  • system

    provided と似ていますが、これを含むJARファイルを
    後述する systemPath で明示的に指定しなければならない点が異なります。

systemPath

scope が system の場合のみ有効(そして必須)です。
この依存関係を持つJARファイルのパスを定義します。

exclusions

この依存関係の成果物から除外する成果物の一覧を定義します。
次の子要素を複数定義することが出来ます。

exclusion

除外するプロジェクトを定義します。

artifactId

除外するプロジェクトのIDを定義します。

groupId

除外するプロジェクトのグループIDを定義します。

optional

この依存関係が、このプロジェクトを使用するのにoptional(必須でない)かどうかを定義します。
デフォルトは false です。

reports

過去のPOMリポジトリで使用するもので、現在は使用しない方がいいようです。
後述の reporting を使用しましょう。

reporting

Mavenが生成するサイトに含まれるレポートに関する情報を定義します。
以下の子要素を持ちます。

excludeDefaults

true にすると、サイトはデフォルトでレポートを生成しません。
デフォルトは false です。

outputDirectory

レポートを生成するディレクトリを定義します。

plugins

レポートに必要なプラグイン一覧を定義します。
次の子要素を複数定義することが出来ます。

plugin

レポートに必要なプラグインを定義します。

groupId

レポートプラグインのグループIDを定義します。

artifactId

レポートプラグインのIDを定義します。

version

レポートプラグインのバージョンを定義します。

inherited

レポートプラグインの設定を子に継承するかどうかを定義します。

configuration

レポートプラグインのその他各種設定を定義します。

reportSets

複数のレポートセットを定義します。
次の子要素を複数定義することが出来ます。

reportSet

一つのレポートセットを定義します。

id

レポートセットのIDを定義します。

configuration

レポートセットのその他各種設定を定義します。

inherited

レポートセットの設定を子に継承するかどうかを定義します。

reports

レポートセットから生成されるレポート一覧を定義します。
次の子要素を複数定義することが出来ます。

report

レポートを定義します。

dependencyManagement

プロジェクトを生成するのに必要な依存関係を定義します。
次の子要素を複数定義することが出来ます。

dependencies

プロジェクトを生成するのに必要な依存関係を定義します。
dependencies を参照して下さい。

distributionManagement

デプロイに関する情報を定義します。

repository

mvn deploy

成果物をリモートリポジトリにデプロイするのに必要な情報を定義します。

<repository>
  <id>ftp-repository</id>
  <url>ftp://repository.mycompany.com/repository</url>
</repository>
uniqueVersion

スナップショットをユニークなバージョンで割り当てるかどうかを定義します。
デフォルトは true です。
この場合、タイムスタンプおよびビルド番号によってユニークなバージョンが割り振られます。
false にすると、毎回同じバージョンが割り振られます。

id

リポジトリIDを定義します。
settings.xml にある server のidと揃える必要があります。

name

リポジトリの名称を記述します。

url

リポジトリのURLを記述します。

layout

リポジトリレイアウト種別を定義します。
legacy / default のいずれかを指定します。
デフォルトは layout です。

snapshotRepository

プロジェクトから生成される成果物のスナップショットを
リモートリポジトリにデプロイするのに必要な情報を定義します。
repository と同様の要素を持ちます。

site

mvn site-deploy

プロジェクトのWebサイトファイルをデプロイするのに必要な情報を定義します。

<site>
  <id>website</id>
  <url>scp://www.mycompany.com/www/docs/project/</url>
</site>
id

デプロイする場所を表すユニーク識別子を定義します。

name

デプロイする場所を表す名称を定義します。

url

Webサイトがデプロイされる場所のURLを定義します。

downloadUrl

プロジェクトのダウンロードページを定義します。

relocation

成果物が新しいID/グループIDに移動したときの
リローケーション情報を定義します。

groupId

リロケーションのグループIDを定義します。

artifactId

リロケーションのIDを定義します。

version

リロケーションのバージョンを定義します。

message

リロケーションの追加メッセージ(例えば、リローケーションの理由など)を定義します。

status

リモートリポジトリにある成果物の状態を定義します。
none / converted / partner / deployed / verified
いずれかを指定します。
デフォルトは none です。

properties

プロジェクトのプロパティを定義します。