- 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.