Maven es una herramienta para la gestión y construcción de proyectos software, sobretodo para aquellos basados en lenguaje Java. Se trata de una herramienta similar, en cuanto a su objetivo, a make y ant, aunque con una orientación mayor a la configuración por convenio.
Actualmente es un proyecto de nivel superior de la Apache Software Foundation, y lo podemos encontrar en la dirección: http://maven.apache.org.
Los objetivos principales de maven son:
- Facilitar el proceso de compilación y construcción del proyecto.
- Generar documentación de calidad sobre el proyecto.
- Proporcionar guías de desarrollo basadas en buenas prácticas.
- Facilitar la migración transparente a nuevas funcionalidades de maven.
La configuración de un proyecto con maven se realiza a través del archivo pom.xml, en el que se describen las propiedades principales del proyecto, sus dependencias con otros módulos y componentes externos, así como la configuración de maven a aplicar sobre él mismo. En la web de maven tenemos una guía de referencia del formato del archivo pom.xml
Siguiendo la filosofía de configuración por convención, maven define una estructura de proyecto por defecto de maven:
project |-- pom.xml `-- src |-- main | |-- java | `-- resources | `-- test |-- java `-- resources
Si seguimos esta estructura (aunque si es distinta, se puede configurar), con una configuración básica podremos realizar las tareas típicas de cualquier proyecto Java, ya predefinidas en maven:
- Compilación de código.
- Empaquetado en archivos .jar, .war ó .ear.
- Generación de javadoc y otros informes.
- Ejecución de tests unitarios.
- etc.
Cada tarea viene determinada por un objetivo de maven, cuyo nombre se le pasa como parámetro. Ej:
mvn install
Existen dos versiones principales de maven, la 1.0.* y la 2.*. Esta última es la que emplearemos en gvSIG.