今回は POM ファイルの集約(Aggregation)を見ていきましょう(一覧)。
どんなときに使う?
POM ファイルの集約によって、大きなプロジェクトを複数のモジュールに分割して開発を行えるマルチプロジェクト機能を使うことが出来ます。
個々のモジュールはそれぞれが1つの (Maven) プロジェクトになっているため、そのプロジェクト単体でビルド(コンパイルやテスト)を実行できます。
また、モジュールを包含しているプロジェクト(以下、統合プロジェクト*1)をビルドすることによって個々のモジュールも自動的にビルドされるため、統合的なビルドも簡単に行うことができます。
どう使う? 其ノ壱 - シンプルな使い方
まずはシンプルな使い方を。 注意するのは次の3点:
- モジュールは、統合プロジェクトのルートフォルダ直下に通常の Maven2 プロジェクトとして作成する
- 統合プロジェクトの POM ファイルは <packaging> を "pom" にする
- 統合プロジェクト POM ファイルの <modules> 要素でモジュールとなる Maven2 プロジェクトを指定する
あと、とくに強制というわけではありませんが、各プロジェクトの groupId は同じにしておきましょう。
もう少し具体的に。 統合プロジェクトを union-sample、そのモジュールを sample-api, sample-impl の2つとしましょう。 このとき、プロジェクト全体のフォルダ構造は以下のようにします:
で、union-sample (統合プロジェクト)の POM ファイルは概ね以下のようにします:
<project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>union-sample</artifactId> <version>1.0</version> <!-- <packaging> を指定する --> <packaging>pom</packaging> <!-- モジュールを指定する --> <modules> <module>sample-api</module> <module>sample-impl</module> </modules> </project>
&module> プロジェクトで指定するのはサブフォルダ名です(artifactId ではなく)。 sample-api, sample-impl プロジェクトの POM ファイルは通常の Maven2 プロジェクトの POM ファイルと同じように書けば OK です。
どう使う? 其ノ弐 - 集約と継承を使う
基本的には集約と継承とは関係のない機能なので、親 POM ファイルと統合 POM ファイル(統合プロジェクトの POM ファイル)も関係のない概念です。 しかし(したがって?)、これらを同一の POM ファイルにすることもできます。 つまり、モジュールに共通したプロジェクトの設定を統合 POM ファイルに書くことができます。
では、上記の例を POM ファイルの継承を使うように書き換えてみましょう。
書き換えると言っても、実際に変更するのはモジュールの POM ファイルに <parent> 要素を付け加えるだけです:
<project> <parent> <groupId>org.sample</groupId> <artifactId>union-sample</artifactId> <version>1.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>sample-api</artifactId> <version>1.0</version> </project>
sample-impl プロジェクトの POM ファイルも同様です。 統合プロジェクトの POM ファイルは変更の必要はありません。
この方法をとったときの注意を1つ。 モジュールのプロジェクトをビルドするためには、親ファイルである統合ファイルがローカル・リポジトリにインストールされていなければならないので*2、まず統合プロジェクトをローカル・リポジトリにインストールしましょう。
Apache Maven 2.0入門 Java・オープンソース・ビルドツール
- 作者: 野瀬直樹,横田健彦
- 出版社/メーカー: 技術評論社
- 発売日: 2006/12/13
- メディア: 大型本
- 購入: 8人 クリック: 141回
- この商品を含むブログ (97件) を見る
- 作者: シェリーパワーズ,Shelley Powers,武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2007/05
- メディア: 単行本
- 購入: 5人 クリック: 87回
- この商品を含むブログ (82件) を見る