Tutorial de Maven

De ChuWiki


Qué es Maven[editar]

Maven es una herramienta de línea de comandos que nos ayuda en todos los pasos del desarrollo de nuestro proyecto java. Entre otras cosas, es capaz de:

  • Crear la estructura de directorios para los tipos de proyectos más habituales: aplicaciones de escritorio, aplicaciones web, jee, plugins del mismo maven, etc, etc.
  • Soportado por la mayoría de los IDE.
  • Crear nuestros jar y guardar en un repositorio maven tanto los jar que generamos como de los que dependemos. De esta forma los tenemos accesibles fácilmente en nuestros proyecto o incluso podemos compartirlos con otros desarrolladores.
  • Busca jars de los que dependemos en internet y nos los baja, con todas sus dependencias.
  • Generar documentación: Javadoc, una web del proyecto, informes de test, etc.
  • Pasar los test automáticos de JUnit.
  • Generar un zip de instalación de nuestra aplicación.

Instalar Maven[editar]

Nuestro primer paso sería [[instalar maven. Basta descargar el zip, desempaquetarlo en algún sitio y poner su directorio bin en el path de búsqueda de ejecutables de nuestro sistema operativo. En el enlace puedes ver los detalles.

Crear un proyecto Maven[editar]

Una vez tenemos instalado maven, podemos crear un proyecto. El siguiente comando nos crea un proyecto estilo "Hola Mundo"

mvn archetype:generate -DgroupId=com.chuidiang -DartifactId=proyecto -DinteractiveMode=false -DarchetypeArtifactId=maven-archetype-quickstart 

Puedes ver los detalles de este comando y lo que genera en creación de un proyecto Maven. En el enlace importar el proyecto en un IDE o incluso como crear proyectos maven directamente con el IDE.

Fases de construcción de maven[editar]

Cuando compilamos nuestro proyecto con Maven, maven lo hace por fases. Estas fases son

  • validate. Verifica que toda la estructura del proyecto está bien construida
  • compile. Compila nuestros fuentes.
  • test. Compila y ejecuta los test unitarios, si los hay.
  • package. Genera el jar de nuestro proyecto.
  • verify. Compila y ejecuta los test de integración, si los hay.
  • install. Guarda el jar de nuestro proyecto en un repositorio común en nuestro ordendor. A partir de ahí, este jar está disponible para otros proyectos maven en nuestro ordenador.
  • deploy. Sube nuestro jar a un repositorio en otro ordenador. A partir de ahí, está disponible para cualquier otro desarrollador que use el mismo repositorio.

Cada fase coincide con un comando maven, es decir, podemos ejecutar mvn validate, mvn package, etc. Cuando ejecutamos uno de estos comandos, se ejecutan automáticamente los de las fases anteriores, en orden. Es decir, si ejecutamos mvn package, se ejecutarán validate, compile, test y finalmente package.

Por ello, suele ser normal ejecutar solo mvn verify o mvn install. Puedes ver más detalle en comandos de Maven

Dependencias con Maven[editar]

Es normal que nuestro proyecto Maven necesite de librerías jar de terceros. Esto es lo que maven conoce como dependencias.

Uno de los puntos fuertes de Maven es que la mayoría de las librerías de terceros que podamos necesitar están en internet, en un repositorio de librerías gestionado por Maven. El repositorio está en https://repo1.maven.org/maven2/. Existen además otros repositorios en internet gestionados por otras organizaciones. https://mvnrepository.com/ es un buen sitio si quieres buscar dependencias es varios repositorios de internet.

Cada proyecto maven y por tanto, cada librería de terceros, se identifica por tres parámetros

  • groupId o grupo. Habitualmente el mismo para un determinado grupo de proyectos relacionados o por los proyectos creados por una organización concreta. Por ejemplo, las librerías de Spring Boot suelen tener groupId org.springframework.boot.
  • artifactId o nombre del proyecto/librería. Este referencia a un jar concreto. Por ejemplo, spring-boot-starter
  • version o número de versión del jar.

Si necesitamos alguna de estas liberías, podemos buscarla por nombre en https://mvnrepository.com/, seleccionar la versión ý añadirla en nuestro proyecto Maven. En dependencias con Maven tienes el detalle de cómo hacerlo.

Generar un jar ejecutable[editar]

Para que nuestro fichero jar sea "ejecutable", bien haciendo doble click sobre él en el explorador de archivos de nuestro sistema operativo, bien desde una línea de comandos sencilla como esta

java -jar miproyecto.jar

es necesario que el fichero jar tenga dentro un fichero de Manifiesto bien configurado. Puedes ver los detalles en añadir clase main, dependencias y entradas en el fichero de manifiesto del jar

Generar un zip para distribuir[editar]

Para ejecutar nuestro proyecto, no suele bastar con el jar de nuestro proyecto. Normalmente debemos llevarnos todas las librerías jar de terceros, quizás ficheros de configuración o imágenes, iconos, etc. Así que suele ser una tarea habitual construir un zip que contenga todo esto. Y por tanto, maven también nos ayuda.

Puedes ver los detalles en cómo hacer un zip para distribuir con Maven

Generar documentación de nuestro proyecto Maven[editar]

Finalmente, otra tarea que puede ser habitual si es un proyecto más serio, es construir la página web del proyecto. En ella suelen colocarse apartados para una descripción del proyecto, el javadoc del proyecto si es una librería java lo que hemos hecho, informes de los test que se han pasado, etc, etc.

En generar documentación de un proyecto Maven tienes detalles de cómo hacerlo con Maven.

Compartir nuestro proyecto Maven[editar]

Hemos comentado que hay repositorios de jar donde podemos descargar librerías de terceros de los que dependemos. Es posible montar estos repositorios en un servidor compartido con tus compañeros de proyecto o de trabajo. Entonces, teniendo los permisos adecuados, con mvn deploy es posible los jar de tus proyectos a ese repositorio para que tus compañeros puedan usarlo.

En maven deploy tienes los detalles.