Apache Maven Simplifica el Proceso de Construcción -- Incluso más que Ant

Apache Maven reutiliza mecanismos para simplificar el proceso de construcci�n y generalmente mejora las funcionalidades de la popular herramienta Ant.

Esta nueva herramienta (junto con una nueva aproximaci�n, puede autom�tizar el proceso de construcci�n Java. S�lo tendremos que darle a Maven un poco de informaci�n sobre la estructura de directorios del proyecto y �l manejar� el resto. Maven posee todas las funcionalidades requeridas para construir nuestro proyecto (limpiar, compilar, copiar recursos, etc.). En otras palabras, para construcciones est�ndar no necesitamos crear ning�n script de construcci�n.

En este art�culo, explicaremos exactamente qu� es Maven y qu� problemas intenta resolver. Luego veremos c�mo automatizar tus propios procesos de construcci�n utilizando Maven. Como Ant actualmente es la herramienta de construcci�n en la arena Java, este art�culo tambi�n asume que el lector tiene un entendimiento b�sico de ella.

.�El Proceso de Construcci�n Automatiza Tareas Diarias

Como programadores, perdemos la mayor�a de nuestro tiempo automatizando tareas para otros. Pero �qu� hay de automatizar nuestras tareas? Los IDEs automatizan mucho trabajo, pero muchos desarrolladores buscan una herramienta externa para una tarea particular: el proceso de construcci�n. El concepto de construcci�n ha evolucionado con los a�os, y las herramientas de construcci�n de hoy en d�a automatizan s�lo aquellas tareas que el desarrollador se podr�a encontrar cuando desarrolla, compila, prueba o despliega software.

En mi trabajo, uso cada vez m�s a rega�adientes un lenguaje de script con la herramienta de construcci�n al contrario que los lenguajes de macro internos de los IDEs. La siguiente tabla muestra unas cuantas tareas de construcci�n que realizo diariamente.

Compilar Ejecutar jikes o javac
Copia Copiar ficheros de recursos al directorio de clases.
Limpiar Borrar el directorio de clases para que la pr�xima vez que compile sea una compilaci�n l�mpia.
Borrar cualquier fichero temporal generado por el servidor de aplicaciones.
Recrear el directorio de clases.
Jar Comprimir un proyecto en un fichero .jar
Javadoc Generar documentaci�n del c�digo fuente
Test Usar JUnit para ejecutar los test del proyecto.
Desplegar Copiar los ficheros de ejecuci�n al servidor.
Kodo Ejecutar el mejorador de bytecodes JDO de Kodo (Kodo es una implementaci�n de JDO que post-procesa los ficheros class para hacer que sean persistentes.)

.�Aparca Ant, Maven est� aqu�

Cuando empec� a utilizar Ant para automatizar las tareas que he mencionado arriba, fue un gran ahorro de tiempo. Especialmente una vez que aprend� a utilizar y crear tareas Ant personalizadas. Pero eso era para proyectos individuales y bastante simples. Ahora utilizo Ant para automatizar tareas de construcci�n para varios proyectos complejos. Gasto una considerable parte de mi dia en crear y mantener complejos scripts de Ant. Con el tiempo, el mantimiento de esos escripts se ha convertido en una espina.

Especificamente, las siguientes limitaciones de Ant me obligaron a buscar una nueva herramienta de construcci�n:

  1. Reutilizaci�n entre proyectos:
    Mis 10 scripts de construcci�n Ant son casi iguales. Por eso empec� a buscar caracter�sticas de reutilizaci�n de c�digo en Ant. Pero Ant no tiene una forma conveniente de reutilizar targets entre proyectos. Copiar-y-pegar es la �nica elecci�n.
  2. Reutilizaci�n entre desarrolladores:
    La mayor�a de mis scripts Ant son complejos pero no particularmente �nicos para mi proyecto. En otras palabras, como la mayor�a de mis scripts de construcci�n realizan las mismas funciones que los scripts de otra gente. �por qu� ten�a yo que crear un script de construcci�n distinto excepto para las funcionalidades espec�ficas del proyecto?
  3. L�gica y bucles:.
    Como mencion� anteriormente, ahora utilizo Ant para scripts de prop�sito general. Por lo tanto, necesito caracter�sticas de scripts de prop�sito general, como condicionamiento l�gico, construcciones de bucles, y mecanismos de reutilizaci�n. Sin embargo, Ant nunca se pens� como una herramienta de script de prop�sito general. A pesar de todo, es posible a�adir bucles o condicionamiento l�gico utilizando tareas personalizadas, pero el proceso es muy duro.

Para ser honesto, Ant si te permite crear Tareas personalizadas, que son reutilizables entre proyectos. �stas son una gran ayuda y probablemente sean la raz�n del �xito de Ant. Sin embargo, incluso con las tareas reutilizables, todav�a debes tener numerosos escripts, algunos redundantes en cada proyecto. Si tu objetivo es eliminar el script de construcci�n, necesitas algo m�s. Necesitas Librer�as de Targets reutilizables. Aqu� es donde entra en juego Maven.

Maven corrige estos problemas. Con esta nueva herramienta, los targets (que en Maven se llaman goals) son reutilizables (puedes ver en el Ap�ndice A: Sumario de T�rminos y Conceptos Maven un completo listado de la terminolog�a Maven). De hecho, para las tareas m�s comunes, Maven ya tiene creados los goals. Esto significa que no tienes que crearlos tu mismo. Para proyectos sencillos, podr�as incluso no necesitar un fichero de construcci�n. (puedes ver en el Ap�ndice B: Maven vs Ant un analisis comparativo entre Ant y Maven).

.�Maven + POM = Objetivos Conseguidos

Para conseguir su magia, Maven utiliza un Project Object Model (POM), que describe un proyecto en la forma de un fichero XML, project.xml. Espec�ficamente, describe la estructura de directorios del proyecto, sus dependencias de ficheros JAR, y algunos otros detalles de control de proyecto. Piensa en el POM como en los meta-datos del proyecto. Una vez que describes tu proyecto para Maven, creando el POM, puedes invocar cualquier goal interno de Maven (recuerda que un goal es como un target de Ant).

.�Instalar Maven

Para instalar Maven:

  1. Descarga el �ltimo archivo desde la Web Site de Maven y descomprimelo.
  2. Configura la variable de entorno MAVEN_HOME.
  3. A�ade <MAVEN_HOME>/bin a tu variable de entorno PATH.

Nota:
Ten en cuenta que la primera vez que utilices Maven para construir un proyecto, �ste descargar� un paquete de ficheros JAR desde Internet. Estos ficheros JAR los necesitan la pl�tora de plug-ings que tiene Maven (que describiremos m�s adelante). Igual podr�as tener tiempo para tomar un caf� mientras esperas.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR