Multiproyecto en Maven2

Estos dias he tenido un pequeño problema, y es que he tenido que crear un multiproyecto en maven 2, pero no sabía a priori como hacerlo. Sabía la teoría… Un directorio de proyecto “Padre”, el cual tiene un pom.xml en el cual hace referencia a los proyectos que lo forman. Y luego, varios directorios de proyectos “Hijo” dentro de “Padre” los cuales son proyectos (llamémosles) normales de maven.

El problema, es que la teoría me la sabía pero en la práctica no encontré ningún sitio que dijeran específicamente cómo se creaba un multiproyecto de maven. No sabía si tendría que hacer algo del estilo: mvn archetype:create -DarchetypeArtifactId=maven-multiproject o qué…

Al final la solución…mucho más sencilla que todo eso y os la relato a continuación.

1.- Crear “a mano” el directorio padre.

2.- Crear los proyectos que lo compondrán dentro del directorio padre. Éstos los crearemos con mvn archetype:create…

3.- Poner el siguiente archivo pom.xml dentro del directorio padre et voilá! ya tenemos nuestro multiproyecto.

A partir de ahí simplemente hacer mvn install, mvn package o lo que queramos desde el directorio del padre.

<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/xsd/maven-4.0.0.xsd”>
<modelVersion>4.0.0</modelVersion>
<groupId>com.etconsultors.padre</groupId>
<version>1.0</version>
<artifactId>padre</artifactId>
<packaging>pom</packaging>
<modules>
<module>hijo1</module>
<module>hijo2</module>
<module>hijo3</module>
</modules>
</project>

Simplemente comentar que se pueden poner tantos modules como se quieran y que el orden importa, es decir, si hijo2 depende de que se cree el jar de hijo1 pues obviamente deberemos ponerlo en el orden correcto. Sobra decir que cada module deberá ser un proyecto maven2 correcto con su pom.xml y todo.

Con esto me despido y pronto os iré poniendo nuevas entregas de maven, que últimamente estoy entretenido con él.

4 comentarios sobre “Multiproyecto en Maven2”

  1. Anónimo dijo:

    Hola!

    Gracias por el ejemplo, lo he seguido para crear el multiproyecto con Maven y la verdad es que funciona, pero tengo un problema.

    Al hacerlo tal y como tú lo pones ahí tengo dentro del proyecto varios JAR, pero resulta que necesito que uno de ellos sea un Servicio Web (WAR). ¿Eso es posible? ¿Como se hace?

    Gracias por la ayuda.

  2. david dijo:

    Pues es lo mismo que he puesto, lo unico que el proyecto hijo que quieras crear como servicio web será un webapp y lo crearás con la opción -DarchetypeArtifactId=maven-archetype-webapp y ya está, esto te creará el proyecto con empaquetamiento WAR y además con la estructura de directorios con su WEB-INF y todo.
    Al hilo de esto, antes se me olvidó decir cómo añadir en el proyecto hijo2 la dependencia de hijo1, lo cual es tan sencillo como añadir un tag dependency cuyo version, artifactId y groupId coincidan con los de hijo1.

    Saludos.

  3. Manu dijo:

    Una aclaración,

    el orden de los modules es indiferente ya que el pom padre es analizado por el motor de maven (reactor) y este calcula el orden a aplicar según las dependencias del resto de poms.

    Por lo demás, muy instructivo. saludos!

  4. KrisBelucci dijo:

    Great post! Just wanted to let you know you have a new subscriber- me!

Deje un comentario


Cerrar
Enviar por Correo