Maven

Desde que entre en mi nuevo puesto he tenido que enfrentarme a tecnologías con las que no me había topado antes. Hoy quiero hablar de maven. En mi experiencia como desarrollador he trabajado principalmente con dos lenguajes de programación, por un lado php y por otro y por encima del anterior con python. Cuando los proyectos se hacen relativamente grandes el proceso de configuración del proyecto en sí para poder comenzar a trabajar es a veces excesivamente costoso, en python esto se resuelve con virtualenv, pip y pypi. En java esto se puede resolver con maven.

maven es más que un sistema de repositorios, ya que tambien permite construir los proyectos,  compilándolos y generando los artefactos necesarios en cada caso. Esto puede resultar extraño para alguien que viene de un mundo en el que los lenguajes no tienen que ser compilados,  en python todos los requerimientos son de tiempo de ejecución, sin embargo, en un lenguaje compilado, pueden existir distintos tipos de dependencias, lo que hace casi una necesidad que el mismo software que se usa para gestionar las librerías sea usado para construir el proyecto.

Una de las cosas que más me gusta de maven es el famoso “maven war overlay”. Básicamente es un mecanismo que permite construir proyectos y despliegues de una manera similar al paradigma de la herencia. En el proyecto en el que estoy trabajando actualmente usamos este mecanismo para modificar por partes los distintos aspectos que deseamos personalizar, como el aspecto, algunas extensiones o los parametros necesarios para ejecutarlo en producción o pre-poducción.

Se puede usar maven desde eclipse via un plugin. Esto es realmente deseable para gestionar el pom.xml, ya que cuenta con un editor hecho para humanos en lugar de tener que trabajar con un larguísimo fichero xml. Me parece particularmente útil el mecanismo para añadir dependencias ya que se encarga de buscar el groupid por ti lo cual es altamente cómodo.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: