El concepto de Maven Parent POM es muy común en cuanto comenzamos a realizar aplicaciones un poco complejas compuestas por varios proyectos. La mayor parte de estos proyectos comparten el 90% de las librerías. De ahí surge la necesidad de compartir librerías entre varios proyectos . Ese es el problema que nos solventan los Maven Parent POM. Vamos a ver como utilizarlos a través de un ejemplo muy sencillo con dos proyectos web que utilizan JSTL. Ambos proyectos comparten las mismas librerías por lo tanto podemos definir una estructura de Maven jerarquica.
Maven Parent POM
Lo primero que vamos a hacer es crear un proyecto en Eclipse con Maven. Para ello abrimos el entorno de desarrollo y seleccionamos proyecto Maven.
Una vez seleccionado Maven , pulsamos continuar y crear Artefacto simple .Nos aparece una nueva ventana en donde debemos configurar nuestro proyecto Maven.
Es aquí en donde definimos el proyecto y clarificamos su tipo como “POM” de tal forma que otros proyectos hijos lo puedan reutilizar. Ya tenemos construido el primer proyecto.
En este proyecto vamos a definir las librerías que serán compartidas por los proyectos hijos. En este caso voy a optar por las librerías de JSTL que son clásicas.
<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.arquitecturajava</groupId> <artifactId>POMPadre</artifactId> <version>1</version> <packaging>pom</packaging> <dependencies> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> </dependencies> </project>
Realizada este operación vamos a crear con el mismo formato un proyecto hijo. En este caso será un proyecto Web:
Una vez creado el proyecto , el fichero POM.xml contendrá una referencia al POM 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> <artifactId>WebMaven2</artifactId> <packaging>war</packaging> <parent> <groupId>com.arquitecturajava</groupId> <artifactId>POMPadre</artifactId> <version>1</version> </parent> </project>
Podemos crear una página JSP en nuestro proyecto web que haga uso de las librerías de JSTL.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <c:out value="hola jstl"/> </body> </html>
Cargamos la página y nos mostrará el mensaje de Hola.
Acabamos de construir un proyecto Maven que delega en un parent POM para definir la estructura de librerías común que puede ser compartida entre varios podríamos crear otro igual.
Otros artículos relacionados