viernes, 18 de febrero de 2011

Maven!!!




Este post es para repasar un poco los aspectos de apache mave...

Maven es un framework de gestión de proyectos Java, basado en POM (Project Object Model), que nos proporciona funcionalidades desde la compilación hasta la distribución, despliegue y documentación de los proyectos.

Maven se basa en patrones y en estándares. Esto permite a los desarrolladores moverse entre proyectos sin la necesidad de aprender como compilar o empaquetar, mejorando de esta forma, el mantenimiento y la reusabilidad.

Que provee maven??

  • Características generales de Maven

    • Convención sobre configuración

      • Si todos estamos de acuerdo en ciertas cosas ¿Para qué configurarlas? Démoslas por hechas y mantengamos la opción de configuración por si fuera necesario

    • Uso de buenas prácticas

      • Por ejemplo ejecutar los test unitarios antes de hacer un deploy o instalación

    • Un ciclo de vida extensible declarativamente basado en fases y goals

      • Facilita automatizar tareas sencillas o todo el proceso de construcción de forma rápida y simple, una única orden

    • Un modelo centralizado y transparente de gestión de dependencias

      • Se acabó el “Jar Hell”, el buscar jars por internet y las dependencias de estos jars, o casi del todo…

El principal objetivo de maven es permitir a un desarrollador comprender el estado completo del esfuerzo del desarrollo en el período más corto de tiempo. Para lograr este objetivo existen distintas áreas de las que maven se ocupa:

  • Hacer el proceso de construcción sencillo.

  • Proporcionar un sistema de construcción uniforme

  • Proporcionar información de la calidad del proyecto.

  • Proporcionar lineamientos a seguir para el desarrollo de las mejores prácticas.

  • Permitir migraciones transparentes a nuevas características.

Maven utiliza el término artifact para denominar a la unidad mínima que maneja en su repositorio. Puede ser por ejemplo un jar, un ear, un zip, etc. Cuando Maven compila y empaqueta código, produce también artifacts que instala en el repositorio.

Los artifacts están agrupados bajo el id de grupo (groupId) y tienen un id propio (artifactId), una versión, un clasificador y una extensión.

Maven está basado en torno al concepto de ciclo de vida de build (build lifecycle). Esto significa que el proceso para construir y distribuir cualquier artifact (proyecto) está claramente definido.

Para la persona que construye un proyecto, esto significa que solo debe aprender un número pequeño de comandos para construir cualquier proyecto Maven.

Existen tres ciclos de vida built-in con Maven: default, clean y site.

Default

Administra hasta el proceso de deployment

Clean

Administra las tareas de reseteo del build anterior

Site

Administra la creación del sitio de publicación del proyecto

Cada uno de los ciclos de vida está definido por una lista de fases, donde cada fase representa una etapa en el ciclo de vida.

Este ciclo de vida define la secuencia de fases que va desde validar la integridad hasta el despliegue (deploy).

Cuando se solicita la ejecución de una fase Maven ejecuta primero todas las fases anteriores siguiendo la secuencia y termina en la fase solicitada.

Las principales fases del ciclo de vida default de maven son:

validate

Valida si el proyecto es correcto y si tiene toda la información necesaria

compile

Compila el código fuente del proyecto

test

Corre los test utilizando el framework de unit test disponible

package

Toma las clases compiladas y recursos y crea un paquete (jar, war, ear).

integration-test

Procesa y despliega el paquete, para que corran las pruebas de integración.

verify

Ejecuta los chequeos necesarios para verificar que el paquete cumple los criterios de calidad.

install

Instala el paquete en el repositorio local para ser usado como dependencia por otros proyectos localmente

deploy

Copia el paquete a un repositorio remoto para ser compartido con otros usuarios y proyectos.


Las fases del cilo de vida clean:

pre-clean

Ejecuta los procesos necesarios, previos al clean

clean

Remueve todos los archivos generados en un build previo

post-clean

Ejecuta los procesos necesarios para finalizar el clean


Las fases del ciclo de vida site:

pre-site

Ejecuta los procesos necesarios, previos a la generación del site

site

Genera el site con la documentación del proyecto

post-site

Ejecuta los procesos necesarios para finalizar la creación del site

site-deploy

Realiza un deploy del site de documentación, en el web Server especificado.



Tener en cuenta que para el deploy del site, debemos configurar el web Server.







website
scp://www.mycompany.com/www/docs/project/




Bueno hasta aquí un maven, repaso general.