これは、Maven ではかなりトリッキーです。Maven ライフサイクルのパッケージ フェーズ内で、maven-[jar/war/ear]-plugins の複数の実行を試みることができます。実行ごとに、異なる分類子を設定できます。
さらに、maven-war-plugin の実行では、 を使用<overlay>
して、正しい分類子を持つ拡張子を WAR ファイルに取得できます。maven-ear-plugin の実行では、WAR ファイルを正しい分類子で指定できます<webModule>
。
例
拡張モジュールでは、次のように maven-jar-plugin を構成できます。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>extension-AA</id>
<phase>package</phase>
<goals>jar</goals>
<configuration>
<classifier>AA</classifier>
</configuration>
</execution>
<execution>
<id>extension-BB</id>
<phase>package</phase>
<goals>jar</goals>
<configuration>
<classifier>BB</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
...
</build>
WAR モジュールの構成は非常に似ています。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>extension-AA</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<overlays>
<overlay>
<groupId>com.example</groupId>
<artifactId>extension-1</artifactId>
<classifier>AA</classifier>
</overlay>
</overlays>
</configuration>
</execution>
<execution>
<id>extension-BB</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<overlays>
<overlay>
<groupId>com.example</groupId>
<artifactId>extension-1</artifactId>
<classifier>BB</classifier>
</overlay>
</overlays>
</configuration>
</execution>
</executions>
</plugin>
そして最後に、EAR モジュールの構成:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<executions>
<execution>
<id>extension-AA</id>
<phase>package</phase>
<goals>
<goal>ear</goal>
</goals>
<configuration>
<classifier>AA</classifier>
<modules>
<webModule>
<groupId>com.example</groupId>
<artifactId>war-1</artifactId>
<classifier>AA</classifier>
</webModule>
</modules>
</configuration>
</execution>
<execution>
<id>extension-BB</id>
<phase>package</phase>
<goals>
<goal>ear</goal>
</goals>
<configuration>
<classifier>BB</classifier>
<modules>
<webModule>
<groupId>com.example</groupId>
<artifactId>war-1</artifactId>
<classifier>BB</classifier>
</webModule>
</modules>
</configuration>
</execution>
</executions>
</plugin>