El concepto de Maven Tutorial es muy amplio ¿Qué es Maven?. Probablemente es difícil responder de forma sencilla a esta pregunta. Sin embargo si tuviera que decir algo diría que es una herramienta que controla el ciclo de desarrollo de software. Hemos visto en los post anteriores como se generan los módulos mas importantes de la plataforma JEE . Ademas hemos podido analizar su contenido .Ahora mismo con lo que sabemos nuestro ciclo de desarrollo de software se puede reducir a lo siguiente . Tenemos un código fuente y generamos un desplegable (JAR,WAR,EAR) es así de sencillo. Ahora bien si nos fijamos en la siguiente figura.
Es bastante claro que tenemos nuestro código fuente y generamos tres ficheros JAR .¿O quizás la figura quiere decir que tenemos 3 versiones del mismo fichero JAR ?.¿O Quizás se ha copiado y pegado el mismo JAR tres veces?. Las cosas no son tan sencillas como nos parecen a veces.La forma de empaquetar de Java deja muchas puertas abiertas a la flexibilidad pero también a la interpretación .Esto muchas veces genera quebraderos de cabeza ya que la gente tiene dudas sobre si la libreria que esta usando es la correcta o si su versión es la correcta. ¿Como podemos solventar estos problemas?. Hay dos cosas que necesitamos definir
- Nombre de la libreria :Especificar un nombre único de nuestra librería
- Versión de la libreria: Especificar una versión de la librería.
Si tuviéramos estas dos cosas podríamos trabajar con mayor comodidad.¿Ahora bien cómo definir el nombre de nuestra librería para que sea única a nivel mundial? .Para ello nos apoyaremos en las estructuras de paquetes Java . Recordemos que se recomienda el uso de la URL de nuestra pagina web a la hora de definir la jerarquia de paquetes .Por ejemplo en mi caso la URL es “arquitecturajava.com”. Definiremos la estructura de paquetes como “com.arquitecturajava” . A partir de esa estructura nosotros podemos definir las subestructuras que deseemos por ejemplo com.arquitecturajava.blog.componente . En este caso la estructura de paquetes quedaría definida de la siguiente forma.
Maven Tutorial
Así pues podemos tener ya claro cual es el nombre de nuestra librería “com.arquitecturajava.blog.componente” .Una vez realizado este primer paso deberemos también asignar una versión a nuestra librería . En este caso para no complicar demasiado las cosas vamos a suponer que la versión es la 1.0. A Ya tenemos dos cosas definidas el nombre (que es único) y la versión.
Ahora bien todavía tenemos que encajarlo de forma definitiva con la estructura de módulos de JEE . Con la información actual no sabemos si se trata de un JAR,WAR o EAR . Así pues deberemos añadir también que tipo de módulo JEE es nuestra librería.
Si tuviéramos varios componentes dentro de nuestro blog la estructura quedaría mas clara de la siguiente forma.
El concepto Java Artifact
Una librería normalmente tiene un nombre y una versión por lo tanto parece adecuado decir que estamos trabajando con una librería. Sin embargo también es evidente que un WAR o un EAR no encajan con el concepto de librería “standard” ya que contienen muchos ficheros que no son puramente Java .Así pues deberemos definir un concepto distinto en el cual estén incluidos el nombre, version y tipo del sotfware que nosotros estamos desarrollando. Este concepto es lo que en Maven se denomina Artefacto. Un artefacto incluye esta información y mucho más pero por ahora para quedarnos con una idea inicial es suficiente. Así pues lo que estamos definiendo es un nuevo Artefacto.
El fichero POM.xml
Ahora bien para poder trabajar con el Artefacto deberemos almacenar esta información en algún fichero.Este fichero se denomina en Maven POM.xml (Project Object Model) es el fichero fundamental de configuración y es el encargado de almacenar la información anteriormente expuesta.A continuación se muestra su contenido
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.arquitecturajava</groupId> <artifactId>jpabasico</artifactId> <version>0.0.1-SNAPSHOT</version> </proyect>
Acabamos de construir nuestro primer artefacto con su fichero POM.xml en este Maven Tutorial .La etiqueta modelVersion hace referencia a la propia estructura del fichero Maven (actualmente es la 4) y los demás elementos definen la versión , el nombre y el paquete del artefacto.
[…] artículos relacionados : Introducción a Maven , Maven y […]
[…] artículos relacionados : Introducción Maven , Maven Dependencias , Maven […]
[…] artículos relacionados : Introducción a Maven ,Maven y Dependencias ,Eclipse y […]
[…] de ejecución predeterminado. Vamos a verlos a traves de un ejemplo sencillo. Para ello usaremos Maven y las siguientes […]
Saludos.
La verdad no me ha quedado claro, cuál es el propósito de escribir dicho xml. Es solo por cuestiones de meta-información de nuestro proyecto? Cada uno de los componentes (“A” y “B”) debe tener su propio archivo POM.xml?
La verdad jamás he utilizado maven, o no se si lo he usado implícitamente sin darme cuenta. He esuchado que es útil en el manejo de dependencias. No se qué otras utilidades tenga, pero espero aprender sobre ello con la ayuda de tus artículos.
O con maven se empaqueta el artefacto? con algún comando?
maven package
Maven es util pasa saber exactamente que versión y que dependencias de todo tienes 🙂
Hola solo te comento que estuve leyendo un libro no tan extenso de Maven, es corto la verdad, pero le echaré un ojo a tus artículos sobre esto gracias!, por cierto tienes un error de typo en la primera linea del segundo párrafo dice “muestro” y es nuestro, saludos!
Muchas gracias Norman lo he corregido 🙂
Hola Norman, podrías darme el nombre del libro de Maven que has mencionado por favor.
[…] pom: Enlace al fichero pom.xml (En un futuro próximo te hablaré de Maven, si tienes interés o necesidad en utilizarlo puedes comenzar visitando este artículo de Arquitectura Java. […]
[…] pom: Enlace al fichero pom.xml (En un futuro próximo te hablaré de Maven, si tienes interés o necesidad en utilizarlo puedes comenzar visitando este artículo de Arquitectura Java. […]
Hola Jose Luis,
Normalmente se define una carpeta “repository” que puedes ubicar de forma relativa si quieres, pero si generas tus artefactos desde tu equipo (ya sea con Eclipse, Netbeans, etc…) deberás instalarlos con un comando tipo “mvn install” para que Maven los incluya en su jerarquía de carpetas correspondiente y efectivamente poder reutilizarlos en tus proyectos mas adelante. Imagino que Cecilio lo comentará en su lista de artículos mas adelante. Saludos.
Gracias por contestar he tenido problemas en el servidor y lo he tenido que mover de host
De nada, es lo menos que podemos hacer para agradecerte la currada con el libro 😉
Hola:
¿Entonces, todos los Jar que desarrollemos quedan almacenados en la carpeta de instalación de Maven y pueden ser reusados en nuevos proyectos?
Un saludo.
Para ello deberan ser instalados en un repositorio local .. lo comentaré
Muchas gracias, buen artículo muy didáctico!!!