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. __ http://www.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`__ __ http://maven.apache.org/pom.html 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. __ http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html 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.