Páginas

jueves, 7 de julio de 2011

Comenzando a usar Maven (I)

El software de hoy ya no son creaciones monolíticas de un único equipo trabajando localmente en el proyecto. El cada vez mayor número de componentes de código abierto robusto de nivel empresarial hace que los proyectos de software modernos necesiten de una colaboración más dinámica entre los equipos de los proyectos y a menudo esto depende de una mezcla de componentes creados globalmente y otros creados localmente. Mientras que otras herramientas de construcción como Ant da un conjunto de herramientas para construir los bloques del proyecto, Maven cubre muchas de las necesidades normalmente inexistente en estas herramientas y que son requeridas en todos los proyectos.
El camino seguido por Maven es el siguiente:
  • Configura tu ’build’ en vez de codificarla en un script.
  • Reusa la lógica de creación.
  • Una organización de dependencias coherente.
El ’core’ de Maven usa un fichero XML llamado ’POM’ que define todos los datos de configuración necesarios para describir cómo debe construirse el proyecto. Para simplificar esta tarea, Maven trae un ’SuperPOM’ con todas las buenas prácticas y convenciones a nivel de estructura de proyecto, etc.., para minimizar los cambios necesarios a nivel de configuración que deben ser aplicados al proyecto en su puesta en marcha. Los proyectos Maven tienen el concepto de ciclo de construcción (ver abajo), con una serie de fases donde cada una de ellas puede realizar una o más acciones o en terminología maven ’goals’. El ciclo de vida para un proyecto específico puede estar compuesto de todas o un subconjunto de las 'fases' dependiendo de las necesidades del proyecto.
Maven también incluye una manera consistente definir dependencias en el proyecto con otras librerías, ya sean externas o bien internas fruto de desarrollos locales. Automáticamente se bajan las dependencias desde los repositorios remotos o locales, según el tipo que sean las librerías. Maven es extensible vía plugins fácilmente desarrollables. La disponibilidad de plugins para Maven is muy alta cubriendo diferentes áreas: packaging, reporting, IDEs, etc...
Con Maven como la herramienta base de la gestión de los proyectos y construcción podemos crear una serie de funcionalidades e integraciones para automatizar, simplificar e incrementar la calidad del proyecto y la documentación así como acelerar el desarrollo de los proyectos java. Una visión general de las funcionalidades que podemos proveer usando maven se describen en el siguiente gráfico:
  • Project Build (Construcción del proyecto): Permite la construcción mediante un único comando los paquetes de proyecto requeridos (JAR, EAR, WAR, etc...). Además, la construcción de proyectos complejos como composición de múltiples subproyectos es muy simple usando las dependencias (ejemplo: un EAR con múltiples JARs y WARs).
  • Test Environment (Pruebas): Integrado en el ciclo de construcción tenemos la ejecución de las pruebas definidas, incluyendo unit tests, functional tests and integration tests.
  • Automated Deployment (despliegue automático): Usando \\’Profiles\\’ (explicado más abajo) e integrando con Ant, el despliegue automático de la aplicación sobre cualquier servidor de aplicaciones o como stand-alone se simplifica de gran manera.
  • Metricas de la Calidad e Informes (Quality Metrics and Reports): Usando los plugins de Maven y sobre la ejecución de las pruebas del proyecto, es posible generar una gran variedad de métricas de la calidad e informes del software, generándose automáticamente como parte del proceso de construcción.
  • IDE integration (Integración con un IDE): Maven puede ser integrado completamente con los IDEs existentes, como Eclipse, Netbeans e IntelliJ IDEA.
  • Arquetipos (Archetypes): Los arquetipos maven son plantillas de proyectos que pueden ser usadas como referencia para los desarrollos siguiendo una aproximación determinada (ejemplo: struts, appfuse-modular-spring, etc...). Los arquetipos personalizados se pueden definir basándose en los proyectos más típicos desarrollados por el cliente, incluyendo las buenas prácticas del cliente, su estructura de proyectos o estándares de código.
  • Perfiles (Profiles): Maven soporta la definición de diferentes configuraciones específicas para adaptarse a diferentes entornos. Permite substitución de las variables con los valores específicos de cada entorno (ejemplo: URLs, database string connections, etc..). Es posible también añadir dependencias adicionales o la ejecución de plugins específicos (como despliegue automático).
  • Integración Continua (Continuous Integration): Se puede integrar Maven con un entorno de Integración Continua, como se explica en esta propuesta. 


Para más información puedes seguir el siguiente post: Comenzando a usar Maven (II).



    No hay comentarios:

    Publicar un comentario