Abstract-- This document detailing clearly the tool for managing
and building projects in java called Maven, general concepts,
considerations for their use, advantages in addition to architectural characteristics of projects, all these issues will be taken from various books and reports will define.
Keywords-- I DEs; estructura; gestin; construccin de un proyecto; control de versiones; automatizacin; framework; apache; desarrollo; I. INTRODUCCIN La gestin de proyectos es una tarea complicada dentro del desarrollo de software, los programadores ocupan mucho tiempo y esfuerzo automatizando tareas para otros [1], pero surge la interrogante como automatizar tareas para los programadores, los IDEs 1 automatizan muchos procesos pero a veces los desarrolladores buscan herramientas externas para que realicen una tarea en particular referente al proceso de construccin como desarrollo, compilacin, prueba o despliegue de software [2].
Hoy en da existen mltiples herramientas que facilitan esta tarea, una de las ms conocidas es apache ANT 2 , esta es una herramienta usada en programacin Java para la realizacin de tareas mecnicas y repetitivas, normalmente durante la fase de compilacin y construccin. Otra herramienta muy utilizada en la gestin de proyectos Java es apache Maven, en este documento se detallara con claridad algunos puntos clave que permitirn obtener una idea mucho ms clara de la gestin de proyectos con esta herramienta [1].
Apache Maven es una herramienta de lnea de comando es decir que no utiliza interfaz grfica que permite gestionar los distintos directorios de un proyecto de manera automtica [3].
Maven da soluciones a tareas que abarcan desde la compilacin hasta la distribucin, despliegue y documentacin de los proyectos. Se podra describir como un sistema de estndares, un repositorio, y un software usado para manejar y describir proyectos. Define un ciclo de vida estndar para la construccin, prueba, y despliegue de componentes del proyecto [2].
1 Entorno de Desarrollo Integrado
2 Another Neat Tool II. DESARROLLO A. Concepto Apache Maven es un potente framework de gestin de proyectos que proporciona un modelo estndar de gestin y descripcin de proyectos. Su funcionalidad es similar a Apache Ant, pero es mucho ms simple de configurarlo [3].
Se basa en un fichero central, pom.xml, donde se define todo lo que necesitara el proyecto [5]. Maven maneja las dependencias del proyecto, compila, empaqueta y ejecuta los test, mediante plugins, permite hacer mucho ms, como por ejemplo generar los mapas de Hibernate a partir de una base de datos, desplegar la aplicacin, etc. Maven da soluciones a tareas que abarcan desde la compilacin hasta la distribucin, despliegue y documentacin de los proyectos.
El principal objetivo de Maven es que un desarrollador pueda adaptarse al mtodo de trabajo de un proyecto en el menor tiempo posible, disminuyendo su curva de aprendizaje. De hecho, Maven naci como un proyecto interno en Apache, para ayudar al desarrollo de su proyecto Jakarta Turbine [1].
B. Conceptos fundamentales A continuacin se detallan conceptos clave referentes al funcionamiento de Maven [5] 1) POM (Project Object Model): es un archivo principal de la configuracion de apache Maven, en donde se incluyen la informacin necesaria para que se pueda construir y gestionar un proyecto. 2) Arquetipo: crea la arquitectura del proyecto, el contenido del pom.xml, la estructura de los ficheros y carpetas. 3) Plugin: Componente externo de software que agrega mayor funcionalidad 4) Ciclo de vida: secuencia organizada de fases que se encargan de ejecutar tareas determinadas. C. Porque utilizar apache Maven [1] 1. Nos permite un fcil manejo de dependencias y actualizaciones automticas de las mismas 2. Contaramos de un repositorio central de libreras y metadatos, liberando as al sistema de control de versiones de contener jars. 3. Ayuda a la generacin de documentacin, asociada al proyecto 4. Realizacin de test unitarios automticamente Apache MAVEN Ricardo Eduardo Orellana Yanza Universidad Politcnica Salesiana rorellanay@est.ups.edu.ec
5. Acceso instantneo de nuevas funcionalidades con una mnima o ninguna configuracin 6. Maven da soporte a todas las fases del ciclo de un proyecto java tales como: Validacin Compilacin Pruebas Empaquetado Integracin Verificacin Instalacin Despliegue D. Arquitectura de un proyecto Maven Un proyecto Maven es un proyecto de desarrollo definido en un archivo principal de configuracin pom.xml donde se especifica cmo se construir el proyecto [4]. La estructura por defecto se define en la Fig. 1: pom.xml: archivo de configuracin de Maven src/main/java: en este directorio se encuentran los archivos java que formaran parte del proyecto. src/main/resources: en este directorio se encuentran los recursos y ficheros con distintas propiedades que forman parte del proyecto. src/main/webapp: en este directorio se encontraran los archivos tpicos de un proyecto web (JSP, CSS, Web-Inf, etc) src/test/java: dentro de este directorio se encuentran las clases de test del proyecto. src/test/resources: en este directorio se encentraran los recursos y archivos de configuracin para los test
E. Ventajas Homogeneidad de la estructura y de la forma de trabajar, facilitando el mantenimiento de los sistemas y disminuyendo la curva de aprendizaje generada en proceso de adaptacin al proyecto. Control del cdigo fuente, todos los integrantes del proyecto saben dnde est el cdigo fuente, y hacen uso del mismo actualizado. Control de calidad del cdigo, para ello utiliza diversos plugins y funcionalidades como PMD, CheckStyle, JDepend [5]. Creacin automtica de informes y documentacin. En todo momento se conocen las mltiples dependencias del proyecto referente a las libreras. Despliegue automtico de versiones en los diversos entornos de desarrollo, preproduccin y produccin [4]. Generacin automtica de ficheros de configuracin. Ejecucin automtica de pruebas unitarias (JUnit). Integracin con IDEs como Eclipse [2]. Maven permite una sencilla gestin simultnea de varios proyectos. Maven dispone de un enorme repositorio de libreras Open Source en constante actualizacin, de forma que los desarrolladores pueden acceder a las versiones mz actualizadas de las mismas.
F. Archivo pom.xml Dentro de un proyecto Maven las dependencias, construcciones y artefactos deben ser descritos, esta definicin debe ser escrita en un archivo xml llamado POM acrnimo de Project Object Model, este archivo indica como Maven debe realizar sus tareas y modificar su comportamiento por defecto [3]. Este archivo se divide en 4 apartados como se puede ver en la Fig. 2. pom relationships: En este apartado se configuran las relaciones y dependencias del mdulo con otros proyectos Build settings: en esta seccin se configura el comportamiento de Maven. General project information: esta seccin incluye informacin general del proyecto como descripcin, desarrolladores, responsables, etc. Build-Enviroment: en este apartado se configura el entorno para la ejecucin de Maven. G. Figuras y Tablas
Fig. 1. Arquitectura de un proyecto Mave [1].
Fig. 2. Arquitectura del archivo pom.xml [2].
III. CONCLUSIONES En definitiva la utilizacin de Maven en proyectos java permite tener una mayor homogeneidad en procesos de desarrollo, asegurando la calidad del cdigo fuente, adems permiten reducir tiempos pues el programador no tiene que preocuparse en verificar cada de una de las dependencias tanto de libreras y componentes de terceros, adems de las dependencias entre proyectos, control de versione y la generacin de archivos de configuracin de dichas dependencias puesto que Maven proporciona soporte para dichas actividades.
IV. BIBLIOGRAFA
[1] M. A. C. Mora, Introduccin a Maven, 23 agosto 2013. Available: http://prezi.com/pdtdew0wjbcx/introduccion-a- maven/. [2] S. Laungh, Ingenieria de sistemas, 2014 Enero 31. http://www.ingenieriadesistemas.info/2014/01/introduccion- apache-maven.html. [3] Wikipedia.http://es.wikipedia.org/wiki/Maven. [4] Desarrollo y software, 26 Julio 2011. http://www.genbetadev.com/java-j2ee/introduccion-a-maven. [5] Andalucia, Introduccin a Maven y su aplicacin en el Repositorio de Software Libre, Madrid, 2011. [6] Manual de Uso de Maven, Madrid, 2013.