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

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.