Maven

Hay un conjunto de operaciones que solemos realizar cuando creamos un nuevo proyecto en Java. Algunas de estas son:

  • Crear una estructura de proyecto (organización de directorios, paquetes, etc).
  • Definir el tipo de proyecto, (si es multimódulo, si es de tipo war, jar…).
  • Definir las librerías que usará nuestro proyecto, como Log4j, Spring.
  • Compilar, copiar librerías en la carpeta adecuada, etc.
  • Lanzar la ejecución de las clases de test, si las tenemos.
  • Lanzar herramientas que midan la calidad de nuestro código, estilo de codificación, nivel de cobertura de las pruebas, generación de informes, etc.
  • Definir ficheros de configuración para los distintos entornos (desarrollo, pruebas, producción…) y organizar mecanismos que configuren nuestro proyecto de una determinada manera en función del entorno en el que se va a ejecutar.

Estas operaciones las podemos realizar con nuestro entorno de desarrollo de manera manual, añadiendo los plugins adecuados. También nos podemos apoyar en herramientas como Ant, que nos permite escribir “scripts” para lanzar la ejecución de una lista de acciones, como mover archivos de un lugar a otro, compilar, lanzar pruebas, etc.

Aquí surgen una serie de inconvenientes:

  • La estructura del proyecto no sigue ningún estándar. Las carpetas y directorios que se utilicen y la organización dependerá del entorno de desarrollo que se use y del criterio del programador.
  • En ocasiones, implementar los scripts en Ant puede ser tedioso, y en proyectos con cierta complejidad la implementación de dichos scripts se convierte en un desarrollo por si mismo.

Maven permite organizar y gestionar nuestros proyectos. Se basa en “convención sobre configuración”. Es decir, asume una estructura estándar y un comportamiento por defecto que minimiza la necesidad de configuración. Por ejemplo, Maven asume una estructura determinada de ficheros en el proyecto, con lo cual a la hora de crear un war, no se pierde tiempo indicando donde se encuentra las clases, librerías, etc., Maven ya sabe donde encontrar cada elemento para construir el archivo.

Todo proyecto Maven tiene un fichero “pom.xml” (Project Object Model) en el que se definen las dependencias de nuestro proyecto, los plugins que vamos a utilizar (para medir la calidad del código, crear un site con la información de nuestro proyecto,…)  y en definitiva toda la información necesaria para manipular nuestro código.

Maven también define las sucesivas “fases del ciclo de vida de un proyecto“, de modo que para poder ejecutar una fase, se deben ejecutar todas las fases anteriores del ciclo de vida. Por ejemplo, antes de poder empaquetar un proyecto, se compila, y se pasan las pruebas.

Básicamente, es un modelo estándar: una estructura fija donde colocar los recursos del proyecto (fuentes, documentos, etc.) y un fichero pom.xml que contiene una descripción del proyecto. Ello acarrea importantes ventajas como son:

  • Homogeneización: todos los proyectos, independientemente de su tamaño o complejidad, están construidos de la misma forma.
  • Automatización: se consigue automatizar un buen número de tareas, eliminando fallos humanos y agilizando los procesos de desarrollo.
  • Calidad: gracias a la ejecución de pruebas unitarias, generación de informes, etc., se facilita el aseguramiento de la calidad de los trabajos.
  • Centralización de la información : en el fichero pom.xml.
  • Extensibilidad: Maven dispone de un gran número de plugins que permiten ir añadiendo funcionalidades.

El movimiento se demuestra andando, en los próximos post, instalaremos Maven y veremos como utilizarlo. Instalacion y primeros pasos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *