domingo, 1 de marzo de 2015

¿Como armar WAR y EAR simples con Maven?

Para armar el War más simple con Maven y luego como obtener al EAR mas simple a partir del War creado, todo esto utilizando Maven:

Para armar un WAR con Maven hay que ejecutar el comando:


mvn archetype:generate
-DarchetypeGroupId=org.apache.maven.archetypes
 -DarchetypeArtifactId=maven-archetype-webapp
-DgroupId=com.javaen
-DartifactId=myWar









Ejecutamos el comando Maven para generar el WAR:



Nos pide que ingresemos la versión y luego confirmamos:


Nos genera la siguiente estructura para proyector tipo WAR:


A continuación compilamos el proyecto y lo empaquetamos como un war:

mvn package war:war


Y observamos que en el directorio target tenemos el WAR creado:

 





¿Como se puede continuar?



Se podrían hacer dos cosas:
  • instalar el war en el Tomcat para probar su correcto funcionamiento
  • Instalarlo dentro de un EAR


Para poder instalarlo dentro de un EAR, hay que primero instalar el WAR dentro de nuestro repositorio MAVEN para que luego podamos recuperarlo cuando ejecutemos el pom.xml del EAR.

El comando MAVEN que instala el war dentro de nuestro repositorio maven es:


mvn install:install-file

-Dfile=c:\javaen\desa\myWar\myWar\target\myWar.war

-DgroupId=com.javaen

-DartifactId=myApp

-Dversion=1.0  
-Dpackaging=war


Vamos a necesitar un nuevo pom.xml para armar el EAR.
Observemos que lo dejaremos en otro directorio nuevo y vacío:


c:\javaen\desa\myWar\myEar\pom.xml


El contenido de este pom.xml para el EAR es el siguiente:


IMPORTANTE: Observar en el pom.xml que dice:

    <unpack>false</unpack>
Esto significa que el WAR dentro del EAR no va a estar expandido.
En algunos Application Server como Websphere es necesario armar los EAR de esta manera, con el WAR enpaquetado.




<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.javaen</groupId>
   <artifactId>myEar.ear</artifactId>
   <packaging>ear</packaging>
   <version>1.0</version>
   <name>myWar Maven Webapp</name>
   <url>http://maven.apache.org</url>
   <properties>
      <spring-security.version>3.2.1.RELEASE</spring-security.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <spring.version>4.1.6.RELEASE</spring.version>
      <jdk.version>1.6</jdk.version>
      <java-version>1.6</java-version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>com.javaen</groupId>
         <artifactId>myApp</artifactId>
         <version>1.0</version>
         <type>war</type>
      </dependency>
   </dependencies>
   <build>
      <finalName>myWar</finalName>
      <plugins>
         <!-- Plugin Para armar un ear ... -->
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.10</version>
            <configuration>
               <modules>
                  <webModule>
                     <groupId>com.javaen</groupId>
                     <artifactId>myApp</artifactId>
                     <uri>myWar.war</uri>
                     <bundleFileName>myWar.war</bundleFileName>
                     <contextRoot>/myWar</contextRoot>
                     <unpack>false</unpack>
                  </webModule>
               </modules>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>





Luego ejecutamos

mvn package ear:ear


Y observamos el EAR generado:

Y de esta forma, no solamente recorrimos los pasos para generar un WAR, sino que también lo agregamos dentro de un EAR




Apache®, Apache Maven® logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.

0 comentarios:

Publicar un comentario