pom.xml

POM (Project Object Model)とは、MavenプロジェクトをXMLで表現したものである。POMはpom.xmlという名前のファイルに保存される。

POMの要素

POMの要素を次に示す。

POMの要素
ElementDescription
projectPOMのルート要素。
modelVersionPOMのバージョン。
artifactIdプロジェクトの成果物の名前。作成するJAR、WAR又はEARファイルなどの名前に使用される。
packaging作成するパッケージングのタイプ。jar(デフォルト)、warearなどがある。
groupIdプロジェクトを一意に識別する名前。プロジェクトのルートパッケージ名を指定するのが一般的。
versionプロジェクトのバージョン。
nameプロジェクトの表示名。ドキュメントを作成するときなどに使用される。
uriプロジェクトのサイトのURI。ドキュメントを作成するときなどに使用される。
dependenciesプロジェクトが依存するライブラリ群。
dependencyプロジェクトが依存するライブラリの情報。
scope依存するライブラリがいつクラスパスに追加されるか。

pom.xmlの例を示す。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fc2web.itref</groupId>
  <artifactId>foo</artifactId>
  <packaging>jar</packaging>
  <version>1.0.0</version>
  <name>Example Project</name>
  <url>http://itref.fc2web.com</url>
</project>

project

projectはPOMのルート要素である。

dependency

dependencyはプロジェクトが依存するライブラリを表す要素である。

親要素

dependencies

子要素

groupId, artifactId, version, scope

scope子要素には、依存するライブラリがいつクラスパスに追加されるかを指定する。

scope要素の値
ValueDescription
compile全ての状況でクラスパスに追加される。(デフォルト値)
providedコンパイル時のみクラスパスに追加される。ライブラリがJDKやコンテナによって提供される場合に指定する。servlet-api.jarのような実行環境で提供されるライブラリに対して指定する。
runtime通常の実行及びテストの実行の時にクラスパスに追加される。実行時のみに必要な場合に指定する。JDBCドライバのような、実行するときだけ必要となるライブラリに対して指定する。
testテストのコンパイルと実行の時にクラスパスに追加される。テストのときのみ必要な場合に指定する。
system明示的にクラスパスに追加する場合に指定する。このスコープのライブラリは常に有効であるとみなされ、リポジトリの検索は行われない。