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!!
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.
ResponderEliminarMuchas gracias camarada , me ha funcinado a la perfeccion con tus instrucciones , gracias por compartir tu conocimiento . Saludos y nuevamente gracias
ResponderEliminar