Modulos dependientes en Maven



Este es un ejemplo de creacion de un proyecto a 3 capas con Maven, en el que la capa de presentacion tiene su propio modulo, la logica de la aplicacion tambien y la capa de presentacion en otro. De forma que podamos cambiar cualquier capa de nuestra aplicacion , unicamente cambiando un jar en el despliegue de nuestra aplicacion.

Para ello crearemos 4 modulos, 3 con las capas y otro que actuará de padre para todos, teniendo sus propiedades comunes a los 3 modulos. Esto tambien facilitara el proceso de desarrollo, puesto que todas las instrucciones maven (compile, test, install, deploy, etc...) seran ejecutadas en los proyectos hijos, asi como las propiedades comunes para ellos (version de librerias, version de compilacion, control de versiones en nuestro repositorio, etc...)

 El proyecto inicialmente lo compongo de 3 capas,

*Proyecto de BBDD-MODEL (o de sacar datos de donde sea)(quizas cambiar el nombre)

*Proyecto de Bussines (el encargado de la logica de la aplicación)

*Proyecto Server (encargado de la capa de presentacion)


Pasos previos

Vamos a montar los 3 proyectos y uno padre que los genere a todos. Para la creación utilizaremos Apache Maven:

Vamos a la raiz del workspace y alli ejecutamos:

Para creación proyecto Model:

            mvn archetype:create -DgroupId=org.dppware.persistence -DartifactId=Persistence

Para el proyecto Bussines:

mvn archetype:create -DgroupId=org.dppware.bussines -DartifactId=Bussines

Para el proyecto Web Server:
mvn archetype:generate -DgroupId=org.dppware.web
-DartifactId=Server
-DarchetypeArtifactId=maven-archetype-webapp


Ahora monto el padre para todos: (es un proyecto normal , pero vacio y con algunos datos en el pom.xml)

mvn archetype:create -DgroupId=org.dppware.parent -DartifactId=Parent

OJO: Al crearse el proyecto padre, hay que editar el pom.xml y cambiar la propiedad package para que indique que es un controlador de proyectos, de esta manera:

<packaging>pom</packaging>






Asociar los proyectos hijos al padre

Definimos en el Parent sus hijos :

  Añadiendo esto debajode la  etiqueta <url>

  <!-- Proyectos hijos -->
  <modules>
                        <module>../Persistence</module>
                        <module>../Bussines</module>
            <module>../Server</module>
  </modules>


Definimos en los Hijos su parent :

Editamos los pom de los proyectos hijos añadiendo esta info (que sacamos del pom.xml del parent):
Añadimos esta etiqueta debajo de la de <url>

<!-- Info del Parent -->
  <parent>
              <groupId>org.dppware.parent</groupId>
              <artifactId>Parent</artifactId>
              <version>1.0-SNAPSHOT</version>
              <relativePath>../Parent</relativePath>
  </parent>


comprobacion

Ahora deberiamos poder ejecutar mvn install sobre el padre y ver si se ejecutan los install sobre el resto de proyectos hijos, asi como cualquier tarea que querramos de maven.
Si falla, comprobar que el <package> del padre tiene valor pom

<package>pom</package>
Espero te haya sido de ayuda!!

Comentarios

  1. Claro, conciso, esclarecedor. Eres el mejor tio. Sin meter porralla directo al grano. Me ha ayudado un monton. Por fin entiendo para que vale maven.

    ResponderEliminar
  2. Muchas gracias camarada , me ha funcinado a la perfeccion con tus instrucciones , gracias por compartir tu conocimiento . Saludos y nuevamente gracias

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Lectura sencilla de XML en Java , SAX (Simple API for XML)

Reiniciar usuario de SVN Subversion

Subir campos Blob a BBDD (Oracle) con Java