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.

Javier Garzás

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

  1. «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

  2. Lic. Humberto Oviedo

    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

  3. 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…

    1. 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.

  4. 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.

  5. Anonimo durmiente

    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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba