Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add WAR inside EAR with Maven

Tags:

I have EAR with an application and I need to extend this app with my own code that is packaged as a WAR. Is there a maven plugin that can help me with putting the WAR inside the EAR?

The manual procedure is to put WAR inside EAR and add module to application.xml. I would like to automate that.

EDIT: small clarification - the WAR project is using maven but for EAR I have only the binary file nothing more.

like image 403
stalker Avatar asked Mar 02 '11 11:03

stalker


People also ask

How do you add war dependency in ear POM XML?

You can change the specific configuration values for the webModule as required. Now create a parent module (with <packaging>pom</packaging> ) and add the war module and the ear module to it. Make sure you set the <parent> of the war and ear modules corrently.


1 Answers

I'd create a new module that has <packaging>ear</packaging>.

In the dependencies for this ear module, include your war module:

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

Now in the build plugins for this ear module, include the maven-ear-plugin like, e.g.:

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

You can change the specific configuration values for the webModule as required.

Now create a parent module (with <packaging>pom</packaging>) and add the war module and the ear module to it. Make sure you set the <parent> of the war and ear modules corrently.

When you run mvn package for this new parent, a war file will be built by the war module and an ear file (containing the war) will be built by the ear module.

like image 82
joelittlejohn Avatar answered Sep 21 '22 01:09

joelittlejohn