前回までで、Maven2 のインストール方法や使い方を見てきました。 次は POM ファイル(以下、pom.xml)の書き方、カスタマイズの仕方を見ていきます*1(一覧)。
ちなみに “POM”とは Project Object Model の略で、プロジェクトのオブジェクト・モデル(説明になってない?)のことです。
サンプル
とりあえず、pom.xml の単純なサンプルを見てみましょう。
<?xml version="1.0"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>sample</artifactId> <version>0.0.1</version> </project>
▲<project> 要素に付いている属性(と名前空間宣言)はなくても良いようです(以降では省略)。
シンプルな pom.xml の各要素
上記サンプルの <project> 要素下にある各要素を見てみましょう。
- modelVersion
- 子テキストはモデルのバージョンを指定しますが、現在は“4.0.0”しかありません。
- groupId
- 開発しているグループの ID です。
- artifactId
- 成果物の ID です。 この ID 名は、成果物(jar ファイルなど)の名前に使われます。
- version
- 成果物のバージョンです。
groupId, artifactId, version の3つ組を使って成果物を一意的に指定することが出来ます。 maven を使ってプロジェクト・テンプレートを生成したときや、m2eclipse を使って pom.xml を生成したときにも、これらの情報が必要でした。 他の成果物への関連(依存性や継承など)を指定する際にも、これら3つ組で対象となる成果物を指定します。
ライブラリへの依存性を付加する
Maven2.0 の有難味を味わえる1つとして、「pom.xml に少々要素を書き加えるだけで、(公開されている)ライブラリを自動的にダウンロードして自分のプロジェクトで使える」ことがあります。 まぁ、とりあえずサンプルを見てみましょう:
サンプル
とりあえず、pom.xml の単純なサンプルを見てみましょう。 ここでは、ロギング・コンポーネントの commons-logging への依存性を付加してみましょう。
<?xml version="1.0"?> <project> ... <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1</version> </dependency> </dependencies> </project>
pom.xml の書き方
他のライブラリに対する依存性は「project/dependencies/dependency」要素で行います。 複数の依存性を書くためには、<dependency> 要素を付加したいライブラリ数だけ書きます。 成果物を指定するためには、少なくとも上に示した成果物を指定する3つ組(groupId, artifactId, version)が必要です。 いろいろなライブラリに対してこれらの3つ組を探す方法は後で書きます。
<dependency> 要素下には、この3つ組以外にも、通常 <scope> 要素を書きます。 他に <optional> 要素も書けます。 これらは次回以降に。
ライブラリの3つ組を探す
m2eclipse を使って検索する
一番簡単な方法は、m2eclipse をインストールして、その検索機能を使って依存性を付加する方法です。
しかし、ライブラリ名に数字が入っていると(log4j, dom4j 等)、検索にかからない*2って問題があります。
あと、maven コマンドで生成したプロジェクト・テンプレートを Eclipse 上に読み込んで開発している場合、
1. m2eclipse で依存性を追加
2. プロジェクトのルート・フォルダで maven eclipse:eclipse コマンドを実行
3. Eclipse 上でプロジェクトをリフレッシュ
という手順を踏まないと依存性が設定されない場合があります。
特定のサイトから検索する
公式には、Maven2 のセントラル・リポジトリから artifactId と version を元に pom.xml ファイルを探せば、その中に groupId, artifactId, version が記述されています。
しかしこれは結構面倒くさいので、MVN Repository を使って検索すると良いでしょう。
“オブジェクト・モデル”
Maven2 ではプロジェクトをオブジェクト・モデルとして扱います。 オブジェクト・モデルとして扱うメリットとしては、継承(Inheritance)と集約(Aggregation)を用いて他のプロジェクトの設定を再利用できることです。 詳しくは次回以降に見ていきます。
Apache Maven 2.0入門 Java・オープンソース・ビルドツール
- 作者: 野瀬直樹,横田健彦
- 出版社/メーカー: 技術評論社
- 発売日: 2006/12/13
- メディア: 大型本
- 購入: 8人 クリック: 141回
- この商品を含むブログ (97件) を見る