Usando maven

Normalmente no suelo escribir sobre aspectos tecnológicos que no tengan que ver con la firma digital o con el servicio que Tractis presta.

Hoy sin embargo me gustaría centrarme en una herramienta muy presente en mi día a día y que me esta haciendo la vida bastante mas fácil: maven.

No daré ningún tutorial de como funciona la cosa, porque para eso ya hay muchísima documentación que lo explica bastante mejor de lo que yo lo haría. Explicaré como nos ayuda maven en la gestión de la configuración en nuestros proyectos.

Un poco de introducción

El principal problema con el que me encontraba a la hora de gestionar el gran numero de pequeños subsistemas Java que tenemos en el backend de Tractis es que gestionar el ciclo de vida de éstos requiere de muchas tareas repetitivas que pueden ser automatizadas y la inclusión de muchas librerías de terceros.

Para esta automatización usábamos Ant de Apache que nos ayudaba a la gestión de tareas repetitivas durante el desarrollo de nuestros proyectos.

Ant es muy bueno para automatizar tareas repetitivas pero la gestión de librerías externas no es todo lo potente que podría ser. La manera común de usar una librería en uno de nuestros proyectos era bajar la versión adecuada, ponerla en un directorio del proyecto e incluirla mediante el classpath en nuestra aplicación.

Esta manera de gestionar las librerías puede funcionar cuando tienes pocos proyectos o los proyectos tienen muy pocas librerías en común. Por el contrario, si cuando buscas una librería en todos tus proyectos obtienes 10 resultados: tienes un problema con la gestión de librerías; y más aun si te paras a ver las distintas versiones de la librería en cada uno de los proyectos.

Es por esto que Ant, pese a que puede ser una alternativa razonable si tienes pocos proyectos, se queda corto conforme vamos teniendo un número considerable de proyectos para gestionar.

Maven al rescate

Maven es una tecnología más que asentada y que se usa en la mayoría de proyectos Open Source Java, pero nunca esta de mas reconocer las enormes ventajas que su aplicación nos aporta.

Esta tecnología ayuda a gestionar el ciclo de vida de los proyectos.Para ello se definen las fases del proyecto (compilación, test, empaquetado, despliegue) en un fichero de meta-información llamado POM donde se recogen detalles de las tareas a realizar en cada fase. También se recogen detalles de la naturaleza del proyecto como por ejemplo sus dependencias respecto a librerías de terceros.

Maven permite la gestión automatizada de estas dependencias de librerías de un modo mas que notable. Simplemente es necesario incluir la referencia a la librería dentro del fichero POM así como la versión requerida y maven la bajará del repositorio por defecto (o de otro que se encuentre configurado dentro del POM) y la incluirá en el repositorio local.

Esto facilita la gestión de la configuración muchísimo ya que los proyectos no van engordando con librerías que se encuentran duplicadas a lo largo de nuestro sistema de control de versiones.

Además la gran mayoría de los proyectos Open Source o bien tienen sus librerías dentro del repositorio por defecto de maven o disponen de un repositorio propio.

En resumen

Yo en un principio pensaba que con mi ant ya me iba bien pero despues de probar maven te quedas con la misma sensación que tienes con gem en ruby o apt-get en debian o ubuntu…¿Como he vivido tanto tiempo sin esto?!

Por David García
Guardado en: Programación, Tecnología | Sin comentarios » | 26 de Marzo de 2009

Más entradas en Negonation Blog