Pages Menu
Categories Menu

Posted by on Jun 6, 2014 in General | 52 comments

Simple y rápido. Entiende qué es Maven en menos de 10 min.

Este post (al igual que ¿Qué es Jenkins? Explicado en menos de 10 min para quienes no lo conocen de nada y Simplifica drásticamente la administración de sistemas: Puppet en 10 min.) está orientado a gente que no sabe qué es esta herramienta. O que tal vez haya escuchado hablar de ella pero realmente no sepa para qué sirve, o no entienda cómo nos ayuda a la hora de desarrollar software.

Si te ocurre esto, no puedes dejar pasar un día más sin aprender de qué va este tema. Porque por todo lo que te voy a contar a continuación, Maven se ha convertido en una herramienta imprescindible para muchos desarrollos software.

——

¿Por qué Maven? ¿Qué es esto?

Maven es una herramienta open-source, que se creó en 2001 con el objetivo de simplificar los procesos de build (compilar y generar ejecutables a partir del código fuente).

Antes de que Maven proporcionara una interfaz común para hacer builds del software, cada proyecto solía tener a alguna persona dedicada exclusivamente a configurar el proceso de build.

Además, los desarrolladores tenían que perder tiempo en aprender las peculiaridades de cada nuevo proyecto en el que participaban.

Si queríamos compilar y generar ejecutables de un proyecto, teníamos que analizar qué partes de código se debían compilar, qué librerías utilizaba el código, dónde incluirlas, qué dependencias de compilación había en el proyecto…

En el mejor de los casos, se empleaban unos pocos minutos para saber cómo hacer una build del proyecto. En el peor de los casos, el proceso de build era tan complejo que un desarrollador podía tardar horas en saber cómo compilar y generar los ejecutables a partir del código.

Ahora, la build de cualquier proyecto Maven, independientemente de sus módulos, dependencias, librerías…consiste simplemente en ejecutar el comando mvn install.

Por otra parte, antes de Maven, cada vez que salía una nueva versión de un analizador estático de código, de un framework de pruebas unitarias (como JUnit) o cualquier librería, había que parar todo el desarrollo para reajustar el proceso de build a las nuevas necesidades.

Y… ¿cómo se ejecutaban las pruebas? ¿Cómo se generaban informes? Sin Maven, en cada proyecto esto se hacía de distinta manera.

Pero Maven, es mucho más que una herramienta que hace builds del código.

Como vemos, Maven simplifica mucho el proceso de build del código, permitiéndonos compilar cualquier tipo de proyecto de la misma manera, librándonos de todas las dificultades que hay por detrás.

Pero lo cierto es que Maven es mucho más que una herramienta que hace builds del código.

Podríamos decir, que Maven es una herramienta capaz de gestionar un proyecto software completo, desde la etapa en la que se comprueba que el código es correcto, hasta que se despliega la aplicación, pasando por la ejecución de pruebas y generación de informes y documentación.

Para ello, en Maven se definen tres ciclos de build del software con una serie de etapas diferenciadas. Por ejemplo el ciclo por defecto tiene las etapas de:

Validación (validate): Validar que el proyecto es correcto.
– Compilación (compile).
– Test (test): Probar el código fuente usando un framework de pruebas unitarias.
– Empaquetar (package): Empaquetar el código compilado y transformarlo en algún formato tipo .jar o .war.
– Pruebas de integración (integration-test): Procesar y desplegar el código en algún entorno donde se puedan ejecutar las pruebas de integración.
– Verificar que el código empaquetado es válido y cumple los criterios de calidad (verify).
Instalar el código empaquetado en el repositorio local de Maven, para usarlo como dependencia de otros proyectos (install).
– Desplegar el código a un entorno (deploy).

Para poder llevar a cabo alguna de estas fases en nuestro código, tan solo tendremos que ejecutar mvn y el nombre de la fase (la palabra que puse entre paréntesis). Además van en cadena, es decir, si empaquetamos el código (package), Maven ejecutará desde la fase de validación (validate) a empaquetación (package). Así de simple.

Por otra parte, con Maven la gestión de dependencias entre módulos y distintas versiones de librerías se hace muy sencilla. En este caso, solo tenemos que indicar los módulos que componen el proyecto, o qué librerías utiliza el software que estamos desarrollando en un fichero de configuración de Maven del proyecto llamado POM.

Además, en el caso de las librerías, no tienes ni tan siquiera que descargarlas a mano. Maven posee un repositorio remoto (Maven central) donde se encuentran la mayoría de librerías que se utilizan en los desarrollos de software, y que la propia herramienta se descarga cuando sea necesario.

Este es un ejemplo de POM donde puedes ver todo esto:

Captura de pantalla 2014-06-04 a las 23.23.32

Como puedes ver, en el mismo archivo también indicamos aspectos como el nombre del proyecto, licencias, quién desarrolla el código, el sitio web, el repositorio de control de versiones, un identificador único del proyecto etc.

Digamos que Maven aporta una semántica común al proceso de build y desarrollo del software.

Incluso, establece una estructura común de directorios para todos los proyectos. Por ejemplo el código estará en ${raíz del proyecto}/src/main/java, los recursos en ${ raíz del proyecto }/src/main/resources. Los tests están en ${ raíz del proyecto }/src/test etc.

Ana M. del Carmen García Oterino

Ana M. del Carmen García Oterino

Ingeniera Software QA at BQ
https://www.linkedin.com/in/amgarciao

Apasionada por la calidad del software (procesos, producto y equipos) y buenas prácticas en general.

Especializada en testing, automatización de pruebas e integración continua.
Ana M. del Carmen García Oterino

52 Comments

  1. Muy buena esta serie de posts!

  2. “En el peor de los casos, el proceso de build era tan complejo que un desarrollador podía tardar horas en saber cómo compilar y generar los ejecutables”

    Horas? en el último proyecto J2EE que estuve tardaba una semana. Llamadme inútil, pero me parecía un tostón infumable, unido a que muchas veces estos procesos de configuración de entorno no están debidamente documentados, a que cada uno va a su bola y se monta el entorno como quiere, etc

  3. Gracias por explicarlo sencillamente

  4. Bueno amiga te quedaste corta con los detalles, en verdad esperaba más; me gustaría contar con mayor información, tal vez un video de la implementación completa de Maven, seguro es mucho pedir pero nada pierdo con preguntar

    • Humberto… google no muerde.

    • Por eso es en 10 minutos

    • Humberto… Google no muerde

    • Humberto… google no muerde.
      Jaja, sólo quería decirlo.
      Pero en serio, no muerde ¬¬

    • Humberto, google no muerde

    • Humberto, Bing no muerde… Pero tarda

  5. Humberto… google no muerde.

  6. Humberto… google no muerde.

  7. Humberto… google no muerde.

  8. Oraleee muy buena reseña ahora ya se que es Maven y para que sirve.

    Y pues si ahí esta Google..

  9. Gracias por el aporte, me ayudó a tener una idea general del concepto.

  10. Humberto… google no muerde..

  11. Google… Humberto no muerde.

  12. Humberto… muerde no google.

  13. Humberto… muerde no google.

  14. Google… Humberto no muerde.

  15. Humberto… google te muerde

  16. Humberto… google te muerde

  17. Huberto…muerdete a Google

  18. pobre humberto, 20 comentarios para el solito jajaja… a proposito.. llamadme ignorante, pero. la efectividad de maven solo se aprecia en proyectos grandes no? si eres un desarrollador under en casa cuyos programas no superan las 10.000 lineas de codigo vale pasarlo por alto? no se si me explico… nunca he usado maven, ni se como se usa eso.. tampoco me considero un programador experto ni nada, soy un amater…

    • Jajajaja justo lo mismo pensé del pobre Humberto, considero que si es bueno utilizar Maven, te servirá mucho aprenderlo y saberlo usar, incluso tus programas y proyectos se vuelven más manejables y si en un punto deseas crecerlos se te hará más sencillo.

    • Google, Humberto te quiere morder

  19. Muy buen post, vengo usando mvn y la verdad recién ahora entiendo como, porque y para que lo hago. Muchas gracias, Saludos !

  20. Humberto… Anónimo no muerde

  21. jajajajaja, pobre Humberto

  22. Humberto… google no muerde ¬¬ Jaja, s{olo quería decirlo pero en serio… No muerde.

  23. Muerde… Humberto no google

  24. Google, Humberto te quiere morder

  25. Humgoogle… muerbeto no

  26. muy bueno

  27. Humberto google… hum…go…hodooor !!!

  28. Gooblerto Humgle On muede..

  29. otrebmuH… elgooG on edreum.

  30. Gilberto el poodle no duerme

  31. Muerde… Google no Humberto

  32. Google no duerme por culpa de que Humberto no muerde y este no duerme por miedo a que Google le muerda, porque Google duerme cuando muerde y Humberto muerde si duerme pero como no duerme porque Google muerde entonces no muerde y Google no duerme.

  33. Google no duerme por culpa de que Humberto no muerde y este no duerme por miedo a que Google le muerda, porque Google duerme cuando muerde y Humberto muerde si duerme pero como no duerme porque Google muerde entonces no muerde y Google no duerme.

  34. Excelente post, gracias!

  35. Humberto… altavista no muerde.

  36. Gracias por la explicación

  37. Un ejemplo claro de bullying para Humberto :/

  38. Yo solo vengo a decir: Humberto, Google no muerde. Gracias. La radio está muy buena.

  39. Muy bueno, gracias!!

  40. Uberto, ponle un bozal a tu Poodle…

  41. Humberto google no muerde, tampoco youtube ya sabes no esperes que todo caiga del cielo!!

  42. Humberto… Te morderé.

  43. jajajajajajaja muy buen post y comentarios

Post a Reply

Tu dirección de correo electrónico no será publicada.

Share This