2 Maven POM継承を使用したビルド・プロセスのカスタマイズ

Oracleでは、特定の本番環境やランタイム環境またはOracle Fusion Middlewareをターゲットにしたすべてのプロジェクトに対して、ビルド・プロセスのカスタマイズを容易にする共通の親プロジェクト・オブジェクト・モデル(POM)のセットを提供しています。

Oracle提供の各Maven原型では、それぞれの親POMが、WebLogic ServerやCoherenceなど、原型が対象としているターゲット・ランタイム環境に特化したOracle提供の共通の親に設定されます。同様に、共通の親POM(本番またはターゲット・ランタイム環境ごとに1つずつ)では、それぞれの親POMが、Oracle Fusion Middlewareの共通の親に設定されます。

POMおよび原型の継承

共通POMおよびOracle提供の原型は、次のような継承階層を形成します。
com.oracle.maven:oracle-common:14.1.2-0-0
  - com.oracle.weblogic.archetype:wls-common:14.1.2-0-0
    - com.oracle.weblogic.archetype:basic-webapp:14.1.2-0-0
    - com.oracle.weblogic.archetype:basic-webapp-ejb:14.1.2-0-0
    - com.oracle.weblogic.archetype:basic-webservice:14.1.2-0-0
    - com.oracle.weblogic.archetype:basic-mdb:14.1.2-0-0
  - com.oracle.coherence:gar-common:14.1.2-0-0
    - com.oracle.coherence:maven-gar-archetype:14.1.2-0-0
  - com.oracle.soa:sar-common:14.1.2-0-0
    - com.oracle.soa.archetype:oracle-soa-application:14.1.2-0-0
    - com.oracle.soa.archetype:oracle-soa-project:14.1.2-0-0
  - com.oracle.servicebus:project:14.1.2-0-0
    - com.oracle.servicebus:sbar-project-common:14.1.2-0-0
    - com.oracle.servicebus.archetype:oracle-servicebus-project:14.1.2-0-0
    - com.oracle.servicebus:sbar-system-common:14.1.2-0-0
  - com.oracle.adf:adf-parent:14.1.2-0-0
    - com.oracle.adf.archetype:oracle-adffaces-ejb:14.1.2-0-0

ビルド・プロセスのカスタマイズ

たとえば、デフォルト・プロパティの設定、特定のプラグインに対するデフォルトの設定、Mavenプロファイルの定義などの、ビルド・プロセスのカスタマイズを行う場合、適切な親POMに定義を追加できます。

たとえば、 com.oracle.weblogic.archetype:wls-common:14.1.2-0-0に定義を追加した場合、WebLogic Maven原型から作成したすべてのプロジェクト(親を変更していない場合)および手動で作成したプロジェクトを含む、この親に関連するすべてのプロジェクトが影響を受けます。

これを実行すると、各プロジェクトPOMに必要な設定の数を最小限に抑えられます。たとえば、すべてのビルドを同じテスト・サーバーにデプロイしようとしている場合、次のカスタマイズ済の親WebLogic POMの例に示すように、com.oracle.weblogic:weblogic-maven-plugin:14.1.2-0-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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.oracle.weblogic.archetype</groupId>
  <artifactId>wls-common</artifactId>
  <version>14.1.2-0-0</version>
  <packaging>pom</packaging>

  <name>wls-common</name>

  <parent>
    <groupId>com.oracle.maven</groupId>
    <artifactId>oracle-common</artifactId>
    <version>14.1.2-0-0</version>
  </parent>

  <build>
    <plugins>
      <plugin>
        <groupId>com.oracle.weblogic</groupId>
        <artifactId>weblogic-maven-plugin </artifactId>
        <version>14.1.2-0-0</version>
        <executions>
          <execution>
            <id>pre-integration-tests-deploy</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>deploy</goal>
            </goals>
            <configuration>
              <user>weblogic</user>
              <password>password</password>
              <verbose>true</verbose>
            </configuration>
          </execution>
        </executions>
      </plugin> 
    </plugins>
  </build>
</project>

同様に、任意のOracle Fusion Middlewareランタイムをターゲットとするすべてのプロジェクトに影響を与える場合は、com.oracle.maven:oracle-common:14.1.2-0-0にカスタマイズ内容を配置します。

共有内部リポジトリを使用している場合は、親POMをカスタマイズした後に、それらを共有Mavenリポジトリに公開します。

これらのカスタマイズがどのようにプロジェクトに持ち込まれるかを確認するには、プロジェクトのディレクトリから次のコマンドを使用して、プロジェクトのビルドに使用される完全なPOMを確認します。

mvn help:effective-pom

たとえばテスト環境に1セット、QA環境に1セットなど、複数の共有プロパティのセットを親POMに定義する場合は、Mavenプロファイルの使用を検討することをお薦めします。次を参照してください。

http://books.sonatype.com/mvnref-book/reference/index.html

プロファイルを使用すると、コマンドラインに引数を設定することによって、またはPOM内の各種プロパティの有無に基づいて、特定のビルドに対して様々な設定をオンにすることができます。