Introducción a Maven

| 2014-04-18 | No hay comentarios »
512px-Maven_logo.svg¿Qué es Maven?
Maven  es  una  herramienta  open  source   para  administrar   proyectos  de   software.  Por administrar, nos referimos a gestionar el ciclo de vida desde la creación de un proyecto en un lenguaje dado, hasta la generación de un binario que pueda distribuirse con el proyecto.
Maven  nació  dentro  de  la  fundación  Apache  para  complementar  a  Ant,  la  herramienta  de compilación más usada en el mundo Java. Si  no la  conoces, piensa en Make  para  C.
Esto es, Ant permite crear  scripts (usando XML) que indican cómo compilar un proyecto Java  y generar un binario. Maven complementa esta tarea brindándonos una estructura consistente de proyectos (todos los  proyectos  Maven  tienen  por  default  los  mismos  directorios)  y  herramientas  necesarias actualmente  para  la  complejidad  de   los  proyectos  de  software:  gestión  avanzada  de dependencias, informes sobre testing automáticos y extensibilidad vía plugins.
Por  detrás,  Maven sigue  confiando  en Ant para  manejar la compilación e incluso puedes usar las tareas de Ant dentro de Maven. Así que no  es en sí un sustituto de esta  herramienta, sino un complemento.
Maven define, entre otras cosas:
  • Un modelo de objeto del proyecto.
  • Un sistema de gestión de dependencias.
  • El ciclo de vida del proyecto.
  • La lógica para ejecutar nuevas tareas en determinadas fases del ciclo de vida.


Modelo de objeto del proyecto (POM – Project Object Model)

EL POM describe todas las propiedades del proyecto. Entre la información que encontramos en el POM se puede destacar:

  • Coordenadas del proyecto: es la información que permite identificar de forma única a un proyecto.
  • Propiedades administrativas del proyecto: licencia, miembros del proyecto.
  • Dependencias del proyecto: puede referirse a otros proyectos.
  • Repositorios remotos: se pueden referenciar repositorios de artefactos Maven, de los cuales los proyectos pueden obtener sus dependencias.
  • Plugins de terceros: permiten añadir al proyecto funcionalidad específica para su desarrollo.

La existencia del POM permite:

  • Reutilización universal de la lógica de construcción: puesto que los plugins trabajan sobre el POM, éstos pueden ser reutilizados ya que no hay dependencias de la localización del proyecto.
  • Portabilidad e integración de herramientas: todos los IDEs tienen ahora un lugar común donde buscar información sobre el proyecto.
  • Búsqueda y filtrado sencillo de artefactos del proyecto: exiten herramientas de gestión de repositorios que pueden usar la información almacenada en el POM para buscar e indexar los elementos de un repositorio.

Sistema de gestión de dependencias

A través del POM se conocen las dependencias de un proyecto. A su vez, estas dependencias pueden tener más dependencias definidas en sus respectivos POM, que se llaman dependencias transitivas. Maven se encarga de recoger automáticamente todo el árbol de dependencias de un proyecto, liberando de esta gestión al desarrollador.

Ciclo de vida del proyecto

Maven define las sucesivas fases del ciclo de vida de un proyecto, de modo que para poder ejecutar una fase, se deben poder ejecutar de forma ordenada todas las fases anteriores del ciclo de vida. Por ejemplo, antes de poder empaquetar un proyecto, debe ser posible compilarlo y realizar pruebas unitarias. 

Lógica para ejecutar nuevas tareas en determinadas fases del ciclo de vida

Maven delega gran parte de su responsabilidad en plugins de terceros que intervienen en el ciclo de vida del proyecto. Estos plugins se encargan de compilar, empaquetar o crear sitios web con información sobre el proyecto. La inteligencia de Maven se encuentra en estos plugins, que pueden ser descargados del repositorio de Maven.

Conclusión

Maven es una herramienta que facilita la gestión de proyectos en varios sentidos, entre los cuales cabría destacar: 

  • Define una estructura genérica del proyecto, reutilizable por los distintos IDEs.
  • Estandariza las fases del ciclo de vida de los proyectos, de forma que se puede trabajar de la misma forma en cualquier proyecto.
  • Facilita la gestión de dependencias, eliminando la necesidad de recuperarlas de forma manual.

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • windows2 Electron, framework Javascript para crear aplicaciones de escritorio
  • JSF 2 con Maven – Hola Mundo
  • Java RMI
  • Gestión de cambios de la base de datos – Liquibase