¿Qué es Maven? . Esta es quizás la pregunta mas común que un desarrollador Java Junior hace a un desarrollador Java Senior. El conjunto de respuestas que he oido es infinita . Maven es un gestor de proyectos Java , Maven es una herramienta para compilar código Java. Maven es un empaquetador , Maven no se muy bien lo que es, No uses Maven que es un lio. Maven es obligatorio… Maven …..etc. Vamos a explicar de una forma sencilla para que sirve esta Herramienta.
¿Qué es Maven? : La fabrica de coches
Para ello vamos a usar un simil a la hora de acercarnos al concepto . Supongamos que nosotros queremos que nos fabriquen un coche . Se trata de un deseo sencillo pero … un poco caro. Ya que un coche no es algo sencillo de construir sino algo COMPLEJO. Para ello tendremos que acercarnos a la fabrica de coches y pedir el coche. Si hablamos con los encargados de la fabrica y les preguntamos como nos van a fabricar el coche . Nos dirán que todo empieza por el almacén en donde se almacenan las piezas con las cual el coche se monta (Puertas, Motor, Ruedas etc). Cada zona del almacen se encarga de guardar un tipo de elemento. Las puertas pueden ser de modelos diversos, o los motores también pero cada uno va colocado en su parte del almacen.
Eso es lo mismo que ocurre con el software nuestras clases y nuestros componentes .Tienen que ir ubicados en una serie de carpetas “standards” y Maven nos aporta ese estructura básica de carpetas para ubicar las piezas fundamentales para construir nuestro software. De igual manera que una fabrica aporta un almacén para colocar las piezas.
Gestión de Dependencias
Si preguntamos al fabricante de Coches si todas las puertas , motores etc los Fabrican ellos directamente te dirá que algunos sí pero que otros los subcontratan a proveedores de tal forma que vienen ya previamente montados y se almacenan hasta que sean necesarios en el montaje del coche.
Eso es lo que hace Maven cuando incluye dependencias simplemente es comprar a un proveedor en este caso de software unas piezas que necesitamos para construir nuestro Programa. Una vez tenemos todas las piezas para construir nuestro coche tenemos que ponerlas en varias lineas de montaje que según avanzan van montando el coche y probando que todo funciona bien.
LifeCycle
Ese es el ciclo de vida por el que las piezas del coche pasan hasta tener el coche pintado y poderlo entregar .En Maven sucede lo mismo con nuestro software. Pasa por un ciclo de vida o LifeCycle de Maven que se encarga de validar, compilar , testear y desplegar nuestro código en un entorno determinado.
Plugins y equipos de trabajo
Muchas veces en este ciclo de vida que tenemos a la hora de montar el coche se usan equipos de trabajo que operan en el ciclo de vida. Es decir un grupo de operarios que por ejemplo instala las ventanas y que quizás más adelante pinta el coche.
Ese es el concepto de Maven Plugin . Un Plugin es una pieza de software que opera sobre el ciclo de vida de construcción de nuestro software realizando diferentes tareas y que puede ser parametrizado.
Coche , Maven y Versionado
Muchas veces la fabrica va evolucionando el Coche con el paso de los años y pasamos de un Toyota Yaris de 2010 a un Toyota Yaris de 2020 . Para ello se ve obligado a actualizar la versión de todas las piezas o de una gran mayoría de ellas
De la misma forma funciona Maven ya que puede necesitar diferentes dependencias en diferentes versiones para construir el software que queremos construir
Conclusión : ¿Que es Maven?
No es ni mas ni menos que una herramienta para fabricar software de forma Standard y como buena fabrica no es algo sencillo de entender a nivel global en un primer vistazo.
Otros artículos relacionados
- ¿Qué es un Maven Property y como se utiliza?
- Curso Maven y buenas prácticas
- ¿Que es un Maven Goal ?
- Curso Maven
Creo que complicaste mucho la explicación. Maven para mi es un repositorio de jars de diferentes proveedores de componentes, que me evita la molestia como programador de estar buscando en internet cada jar para agregarlo como dependencia en mi proyecto.
Has hecho muy bien Federico en decir para ti. Cada persona trabaja con Maven de una forma y tu simplemente usas el Maven Central Repository . Pero Maven es mucho más y dependiendo de los proyectos puede ser necesario conocerlo mas a fondo
Interesante los q mencionas, por ejemplo soy novato en Java. Pero por ejemplo para agregar una pequeña aplicación el conector de Driver de Mysql, no sabia como agregarlo. En cambio con tutos nuevos siempre se hacia con Ant, entonces lo use y me pareció muy practico. Bueno lo que mencionas me hace pensar como visual studio con c#.
Saludos,