¿Qué hace Maven, en teoría y en la práctica? ¿Cuándo vale la pena usarlo?

Estoy a punto de comenzar un proyecto de Java solo para practicar. He leído sobre Maven, pero en realidad no entiendo cuándo debe usarse.

¿Me puede dar algunos consejos prácticos? ¿Maven ayuda mucho? ¿Qué hace Maven en realidad para mi proyecto?

Que hace

Maven es una “herramienta de gestión de comstackción”, es para definir cómo se .java sus archivos .class en .class , empacados en archivos .jar (o .war o .ear ), (pre / post) procesados ​​con herramientas, administrando su CLASSPATH y todos los demás tipos de tareas que se requieren para construir su proyecto. Es similar a Apache Ant o Gradle o Makefiles en C / C ++, pero intenta ser completamente autónomo y no necesita herramientas o scripts adicionales mediante la incorporación de otras tareas comunes, como descargar e instalar bibliotecas necesarias, etc.

También está diseñado en torno al tema de “portabilidad de comstackción”, para que no tenga problemas ya que tiene el mismo código con el mismo comstackdor trabajando en una computadora pero no en otra (este es un problema conocido, tenemos VM de Windows 98 máquinas ya que no pudimos obtener algunas de nuestras aplicaciones Delphi comstackndo en ningún otro lugar). Debido a esto, también es la mejor manera de trabajar en un proyecto entre personas que usan IDEs diferentes ya que las secuencias de comandos de Ant generadas por IDE son difíciles de importar a otras IDE, pero todos los IDE hoy en día entienden y admiten Maven ( IntelliJ , Eclipse y NetBeans ) Incluso si no le gusta a Maven, termina siendo el punto de referencia para todas las demás herramientas de comstackción moderna.

Por qué deberías usarlo

Hay tres cosas sobre Maven que son muy agradables.

  1. Maven (después de que declare cuáles está utilizando) descargará automáticamente todas las bibliotecas que usa y las bibliotecas que utilizan para usted. Esto es muy bueno y hace que lidiar con muchas bibliotecas sea ridículamente fácil. Esto te permite evitar el “infierno de la dependencia” . Es similar a Ivy de Apache Ant.

  2. Utiliza ” Convención sobre configuración ” para que de forma predeterminada no necesite definir las tareas que desea hacer. No necesita escribir un paso de “comstackción”, “prueba”, “paquete” o “limpieza” como lo haría con Ant o Makefile. Simplemente coloque los archivos en los lugares en los que Maven los espera y debería funcionar sin problemas.

  3. Maven también tiene muchos plug-ins agradables que puede instalar que manejarán muchas tareas rutinarias, desde la generación de clases Java desde un esquema XSD usando JAXB hasta la medición de la cobertura de prueba con Cobertura . Solo pom.xml a tu pom.xml y se integrarán con todo lo demás que quieras hacer.

La curva de aprendizaje inicial es empinada, pero (casi) todos los desarrolladores profesionales de Java usan Maven o desean que lo hagan. Deberías usar Maven en cada proyecto, aunque no te sorprendas si te lleva un tiempo acostumbrarte a él y que a veces desearías poder hacer las cosas de forma manual, ya que aprender algo nuevo a veces duele. Sin embargo, una vez que te hayas acostumbrado a Maven, descubrirás que la administración de comstackción casi no lleva tiempo.

Cómo empezar

El mejor lugar para comenzar es ” Maven en 5 minutos “. Te ayudará a comenzar con un proyecto listo para que introduzcas todos los archivos necesarios y la configuración de las carpetas (sí, te recomiendo usar el arquetipo de inicio rápido, al menos al principio).

Después de comenzar, querrá conocer mejor cómo se utilizará la herramienta. Para eso, ” Better Builds with Maven ” es el lugar más completo para entender las agallas de cómo funciona, sin embargo, ” Maven: The Complete Reference ” está más actualizado. Lea el primero para entenderlo, pero luego use el segundo para referencia.

Del documento de Sonatype :

La respuesta a esta pregunta depende de su propia perspectiva. La gran mayoría de los usuarios de Maven van a llamar a Maven una “herramienta de comstackción”: una herramienta utilizada para construir artefactos desplegables a partir del código fuente. Los ingenieros de comstackción y los gerentes de proyecto pueden referirse a Maven como algo más completo: una herramienta de gestión de proyectos. ¿Cuál es la diferencia? Una herramienta de comstackción como Ant se centra únicamente en el preprocesamiento, la comstackción, el empaquetado, las pruebas y la distribución. Una herramienta de gestión de proyectos como Maven proporciona un superconjunto de características encontradas en una herramienta de comstackción. Además de proporcionar capacidades de comstackción, Maven también puede ejecutar informes, generar un sitio web y facilitar la comunicación entre los miembros de un equipo de trabajo.

Recomiendo mirar el documento de Sonatype y pasar algún tiempo mirando los complementos disponibles para comprender el poder de Maven.

Muy brevemente, opera a un nivel conceptual más alto que (por ejemplo) Ant. Con Ant, debe especificar el conjunto de archivos y recursos que desea construir, luego especificar cómo desea que se mezclen y especificar el orden que debe tener lugar en (limpiar / comstackr / jar). Con Maven esto es todo implícito. Maven espera encontrar sus archivos en lugares específicos, y trabajará automáticamente con eso. En consecuencia, configurar un proyecto con Maven puede ser mucho más simple, ¡pero debes seguir las reglas de Maven!

Maven es una herramienta de construcción. Junto con Ant son las herramientas de Java para la construcción.
Si eres un novato en Java, solo construye usando tu IDE ya que Maven tiene una curva de aprendizaje abrupta.