web-dev-qa-db-ja.com

Mavenを使用してEAR内にWARを追加する方法

アプリケーションを備えたEARがあり、WARとしてパッケージ化された独自のコードでこのアプリケーションを拡張する必要があります。 EAR内にWARを配置するのに役立つMavenプラグインはありますか?

手動の手順では、WARをEAR内に配置し、モジュールをapplication.xmlに追加します。それを自動化したいと思います。

編集:小さな説明-WARプロジェクトはmavenを使用していますが、EARの場合はバイナリファイルしかありません。

21
stalker

<packaging>ear</packaging>を含む新しいモジュールを作成します。

このearモジュールの依存関係に、warモジュールを含めます。

<dependency>
    <groupId>com.your.group.id</groupId>
    <artifactId>your-war-artifact</artifactId>
    <version>your-war-version</version>
    <type>war</type>
</dependency>

次に、このearモジュールのビルドプラグインに、次のようなmaven-ear-pluginを含めます。

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <finalName>MyEarFile</finalName>
        <version>5</version>
        <generatedDescriptorLocation>${basedir}/src/main/application/META-INF</generatedDescriptorLocation>
        <modules>
            <webModule>
                <groupId>com.your.group.id</groupId>
                <artifactId>your-war-artifact</artifactId>
                <uri>YouWarFile.war</uri>
                <bundleFileName>YouWarFile.war</bundleFileName>
                <contextRoot>/appname</contextRoot>
            </webModule>
        </modules>
    </configuration>
</plugin>

必要に応じて、webModuleの特定の構成値を変更できます。

次に、親モジュール(<packaging>pom</packaging>付き)を作成し、それにwarモジュールとearモジュールを追加します。 warモジュールとearモジュールの<parent>を正しく設定していることを確認してください。

この新しい親に対してmvn packageを実行すると、warファイルはwarモジュールによって構築され、earファイル(warを含む)はearモジュールによって構築されます。

46
joelittlejohn

依存関係としてWARを追加し、 maven ear plugin を使用します。次に ear:generate-application-xml ゴールを使用し、最後に ear:ear ゴールを使用します。

0
Koziołek