Es una herramienta más evolucionada capaz de generar todas las estructuras de directorios para nuestro proyecto, Maven podrá descargar las librerías que nos hagan falta en nuestro proyecto, ¡sean las que sean!.

En la mayoría de IDEs puedes integrar Maven, pero si no quieres depender de otra herramienta, también puedes ejecutarlo de forma nativa en tu ordenador. Hay muchos tutoriales para hacer esto y, si eres programador, te será muy sencillo seguirlos.

Pero lo mejor de Maven son los arquetipos. Un arquetipo es como una plantilla de proyecto, un patrón que define el tipo de proyecto. Igual que utilizamos patrones de diseño para solucionar problemas comunes en una programación, podemos utilizar patrones para el esqueleto de nuestro proyecto. Maven nos da la posibilidad de elegir un patrón determinado, en función de nuestras necesidades, y a partir de ahí empezar a trabajar casi directamente, sin preocupaciones sobre qué librerías usar, qué versiones son compatibles y cómo crear la estructura del proyecto.

VENTAJAS

Hay principalmente tres grandes cosas que hemos conseguido con maven y sin las que ahora no seríamos capaces de trabajar.

La primera es que ahora todos nuestros proyectos están organizados igual. Esto, por supuesto, puede conseguirse con disciplina y sin necesidad de maven, pero en grupos numerosos de desarrolladores es más fácil de conseguir si la herramienta te obliga a seguir una estructura o al menos, si te obliga a hacer un esfuerzo importante si te quieres salir de esa estructura. Se acabó el  hacer scripts de compilado, el preguntar a otro cuando cambias de proyecto dónde están las cosas, el dejar ficheros o iconos por cualquier lado. Ahora cualquiera puede pasar de un proyecto a otro y sabe manejarse por la estructura sin ningún problema.

La segunda gran ventaja son los jar. Al dejar todos los jar de los proyectos en un repositorio centralizado (usamos nexus) y usar versiones SNAPSHOT de maven, todos tenemos siempre disponibles los últimos jars. Antes era necesario que cada uno compilase los jar que  necesitara o se los pidiera a alguien que los tuviera, o que alguien se acordara de meterlos en el sistema de control de versiones. Eso ya no es necesario, maven/nexus se encarga de que todos tengamos siempre los últimos jars.

Y la tercera gran ventaja es la herramienta de integración continua (Hudson), que todas las noches saca los fuentes del sistema de control de versiones, los compila y pone los jars en nexus. Al ser hudson el encargado de meter los jar en nexus, estos siempre están actualizados y siempre está disponible la última versión para todo el mundo. Y al ser hudson el que compila en un servidor separado, eliminamos por un lado los típicos errores de código que sólo compila en el PC del desarrollador Fulanito porque inadvertidamente ha puesto un path suyo local en algún sitio, o se ha olvidado de meter algo en el sistema de control de versiones. Este Hudson nos sirve además para obtener de él las versiones de instalación tanto para el entorno de producción como para pruebas. Ya no dependemos de que alguien tenga todo lo necesario para generar estas versiones y de que ese alguien esté.

CARACTERÍSTICAS

1) Compatibilidad con Maven2: la migración de proyectos de Maven2 a Maven3 es prácticamente transpante. Hay que tener en cuenta que el único inconveniente que puedes encontrarte por el camino es que, si tienes una dependencia duplicada o no especificas la versión de plugins y/o dependencias, Maven 3 te avisará de dichos problemas y te recomendará que los arreglas, puesto que los ficheros POM mal formados no serán soportados por versiones posteriores.

2) Notable mejora de rendimiento: la velocidad de Maven3 con respecto a versiones anteriores mejora de un 50% a un 400%. Esta es una de las caracterísicas más importantes en opinión del autor.

3) Versiones Automáticas de Parent: en Maven 3.1, no tienes la necesidad de especificar la versión padre de los submódulos construidos a partir del mismo.

4) Builds en Paralelo: Maven 3.1 introduce una nueva característica, llamada builds en paralelo, que permite programar módulos en paralelo. Para escribir un proyecto en paralelo, puedes utilizar el siguiente comando:

mvn -T 2 clean install mvn -T 2C clean install

Con los builds en paralelo, puedes mejorar el rendimiento hasta un 20 o un 50%. Sin embargo, esta es una característica experimental que no debe usarse, de momento, en entornos de producción.

5) Mejor descripción de errores: Maven 3 tiene mejorada la capacidad de reportar errores, y proporciona un link a la página Maven de wiki donde puedes obtener una descripción completa del error y sus causas posibles.

6) Plugin Extension Points: En Maven 3, puedes conectar diferentes puntos de extensión para modificar el comportamiento del plugin en lugar de extender el plugin como se ha hecho con Maven 2. Por ejemplo, ahora es posible definir un extension point para alterar la manera de que el web.xml será procesado por el plugin WAR.

7) Mixins: esta característica permite componer tu POM con fragmentos POM, en lugar de usar la herencia. Están disponibles en la versión 3.1 de Maven. Estos Mixins serán desplegados en un repositorio y referenciados con un coordinador estándar.

8) Maven Shell: Maven Shell es una línea de interfaz de comando para permitir que Maven mejore la velocidad de construcción porque cachea el POM parseado, eliminando la necesidad de invocar Maven de manera repetida. Soporta el Arquetipo de integración de Maven, proporciona la integración de Nexus e incluye un sistema de construcción interno. Al no estar incluido en la versión estándar, hay que descargar esta característica de manera separada.

9) Build Poliglotas: esta característica permite escribir un fichero POM en un formato no XML, soportando lenguajes como Groovy, Ruby, Scala, Clojure, YAML. Al igual que Maven Shell, no está incluída esta característica por defecto en Maven3, por lo que hay descargarlo de manera separada.

10) M2Eclipse: este plugin proporciona la integración entre Maven y Eclipse. La versión 0.10.0 (a la fecha de publicación de este tutorial, la última) ha sido completamente reescrita utilizando el API embebido de Maven3. La mejora de M2Eclipse ha sido, según fuentes internas de desarrollo del proyecto, de un 200 a un 500%, principalmente, porque internamente M2Eclipse proporciona informacion extra de los metadatos XML en el POM de Maven, que será reconocido sólo por el plugin de M2Eclipse.

About Author

NGuerrero

Post Anterior

Post Siguiente