web-dev-qa-db-fra.com

Comment ajouter WAR inside EAR avec Maven

J'ai EAR avec une application et j'ai besoin d'étendre cette application avec mon propre code qui est emballé en tant que WAR. Existe-t-il un plugin Maven qui peut m'aider à intégrer WAR à l'intérieur de l'EAR?

La procédure manuelle consiste à placer WAR dans EAR et à ajouter un module à application.xml. Je voudrais automatiser cela.

EDIT: petite précision - le projet WAR utilise maven mais pour EAR, je n'ai que le fichier binaire, rien de plus.

21
stalker

Je créerais un nouveau module qui a <packaging>ear</packaging>.

Dans les dépendances de ce module ear, incluez votre module war:

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

Maintenant, dans les plugins de construction de ce module auriculaire, incluez le plugin maven-ear-plugin tel que, par exemple:

<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>

Vous pouvez modifier les valeurs de configuration spécifiques pour webModule selon vos besoins.

Créez maintenant un module parent (avec <packaging>pom</packaging>) et ajoutez-y le module war et le module ear. Assurez-vous de définir correctement le <parent> des modules war et ear. 

Lorsque vous exécutez mvn package pour ce nouveau parent, un fichier war sera créé par le module war et un fichier ear (contenant la guerre) sera créé par le module ear.

46
joelittlejohn

Ajoutez WAR comme dépendance et utilisez maven ear plugin . Ensuite, utilisez ear: generate-application-xml goal et enfin ear: ear goal.

0
Koziołek