前回、Maven2 上で dom4j が依存するライブラリを見ました。 今回は、具体的に POM ファイルを書いてみましょう(一覧)。
ここでは、以下の条件
- 対象となる Java 事項環境は Java SE 1.4 以降(すなわち xml-api は依存性に入れない)
- XPath を使う(すなわち jaxen を依存性に入れる)
- StAX, JAXB は使わない
を満たすプロジェクトに対する POM ファイルを書きます。 手順は以下の通り:
1. dom4j を依存性に入れる
まず、dom4j に依存性を入れた POM ファイルは次のようになります:
<?xml version="1.0"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>sample</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> </dependencies> </project>
2. xml-api への依存性を除去する
次に、xml-api への依存性を除去します。 これには、<dependency> 要素の子要素に <exclusions> 要素を入れます:
<?xml version="1.0"?> <project> <!-- modelVersion, groupId, artifactId, version --> <dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> <exclusions> <exclusion> <groupId>xml-api</groupId> <artifactId>xml-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
XPath を使わないなら、これだけで OK です。
3. Jaxen を依存性に入れる
XPath 関連のメソッド等を使えるようにするために、Jaxen への依存性を入れましょう。 dom4j-1.6.1 の POM ファイルには jaxen-1.1-beta-6 に依存すると書いてますが、最新バージョンの jaxen-1.1.1 を使うことにします*1:
<?xml version="1.0"?> <project> <!-- modelVersion, groupId, artifactId, version --> <dependencies> <!-- dom4j-1.6.1 への依存性 --> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.1</version> <scope>runtime</scope> </dependency> </dependencies> </project>
Jaxen は実行時にのみ必要なので、"runtime" スコープにしてあります。 これで終わりっぽいですが、残念ながらもう少し付け加えなければいけないことがあります。
4. Jaxen が依存している不必要な依存性を除去する
何故そうなっているのか分かりませんが、Jaxen は JDOM, dom4j, XOM などに "compile" スコープの依存性が入っています。 かなり特殊な場合でない限り、これら3つのライブラリを同時に使うことはあり得ないので、単なる POM ファイルの書き間違いでしょう。 使う側にするとエラク迷惑ですが。
したがって、Jaxen から間接的に依存関係のあるライブラリを除去してしまいましょう。 チョット長くなりますが。
<project> <!-- modelVersion, groupId, artifactId, version --> <dependencies> <!-- dom4j-1.6.1 への依存性 --> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.1</version> <scope>runtime</scope> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> <exclusion> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </exclusion> <exclusion> <groupId>jdom</groupId> <artifactId>jdom</artifactId> </exclusion> <exclusion> <groupId>xom</groupId> <artifactId>xom</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
これで完了です。
5. コンポーネント化
毎回上記の POM ファイルを書くのは面倒なので、もう少し再利用が簡単なようにしておきましょう*2。 それにはまず、上記の POM ファイルの依存性を持った、別のプロジェクトを作成します。 ただし、<project> 要素直下に <packaging> 要素を(子テキストを "pom")にして付け加えます:
<project> <modelVersion>4.0.0</modelVersion> <groupId>waman.dependency</groupId> <artifactId>dom4j</artifactId> <!-- ここを新たに追加 --> <packaging>pom</packaging> <version>1.0</version> <name>dom4j dependency</name> <dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.1</version> <scope>runtime</scope> <exclusions> <exclusion> <groupId>jdom</groupId> <artifactId>jdom</artifactId> </exclusion> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> <exclusion> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </exclusion> <exclusion> <groupId>xom</groupId> <artifactId>xom</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
これを作成後、このプロジェクトをローカル・リポジトリにインストールします*3。
次は、実際に開発を行うプロジェクトに、上で作成・インストールしたプロジェクトへの依存性を含めます:
<project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>sample</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>waman.dependency</groupId> <artifactId>dom4j</artifactId> <version>1.0</version> <type>pom</type> </dependency> </dependencies> </project>
依存関係に指定する groupId, artifactId, version は上記で作成したプロジェクトのものです。 また、<dependency> 要素下に <type> 要素を指定していることに注意して下さい。
以上で完了です。

Apache Maven 2.0入門 Java・オープンソース・ビルドツール
- 作者: 野瀬直樹,横田健彦
- 出版社/メーカー: 技術評論社
- 発売日: 2006/12/13
- メディア: 大型本
- 購入: 8人 クリック: 141回
- この商品を含むブログ (97件) を見る