Maven2 - Aggregator projects

複数のプロジェクトの連携[dependency]

複数のプロジェクトを連携させる事が可能です。
例えば、project-1では[aaa.jar]、project-2では[bbb.war]だけども内部にaaa.jarを包含するもの。
こう言った場合のプロジェクトの作成方法です。

まず、project-1を作成します。
通常通りプロジェクトを作成したので問題ないです。この場合だとJARが生成されるようなプロジェクトです。

次に、project-2を作成します。
今回も通常通りWebApplicationを作成します。
ただし、pom.xmlにproject-1のJARが必要である事を明記する必要があります。
次のように[groupId][artifactId][version]を指定します。

  <dependencies>
    <dependency>
      <groupId>com.javaworld.hotels</groupId>
      <artifactId>HotelDatabase</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>

こうする事で、当プロジェクトがBuildされる時にHotelDatabaseのjarファイルを自動的に包含します。
また、project-1をBuildし、続いてproject-2をbuildするような集合プロジェクトを定義するpom.xmlの例をあげます。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc
hema-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>com.javaworld.hotels</groupId>
  <version>1.0-SNAPSHOT</version>
  <artifactId>Hotel</artifactId>
  <packaging>pom</packaging>
  <modules>
    <module>HotelDatabase</module>
    <module>HotelWebapp</module>
  </modules>
</project>

ポイントは、がpomになっている事です。
ここをpomにしないと、

Project ID: com.javaworld.hotels:Hotel
POM Location: /root/work/mavenproject/Hotel/pom.xml
Validation Messages:

    [0]  Packaging 'ear' is invalid. Aggregator projects require 'pom' as packaging.

Reason: Failed to validate POM

pomにしろとWARNINGが発生します。