martes, 7 de abril de 2009

Iniciación a Maven 2 (Parte 1)

Maven es una herramienta para gestíón y construcción de proyectos creada por Jason van Zyl, de Sonatype, en 2002. Inicialmente se concibio como una herramienta para gestionar proyectos Java, pero actualmente podemos gestionar también otro tipo de proyectos (personalmente la he usado con proyectos Java y Flex).

Puede que estén pensando que es otra herramienta tipo ANT (Apache), inicialmente era así, pero actualmente Maven 2 es una herramienta mucho más evolucionada y posee una gran cantidad de plugins que permiten hacer todo tipo de cosas (ya hablaremos de los plugins más adelante). La versión actual de Maven es la 2.1.0.

Una de las mayores ventajas de Maven es la posibilidad de usarlo en red, es decir, podemos definir una serie de repositorios a los que acudir cuando nuestro proyecto necesite algún recurso. Estos recursos pueden ser de terceros o propias plugins para maven , como librerías (Jar para Java y Swc para Flex). Incluso podremos definir un repositorio propio en la que desplegar nuestras librerías y así compartirlas con los miembros de un grupo de trabajo.

Las partes del ciclo de vida principal del proyecto Maven son:
1. compile
2. test
3. package
4. install
5. deploy

La idea es que al ejecutar una meta (goal) se ejecutarán todas las anteriores, si alguna de ellas fallará se pararía el proceso informando del error.
Por ejemplo, cuando se ejecuta mvn install Maven verificará si mvn package ha sido ejecutado exitosamente (el archivo jar existe en target/), en cuyo caso no será ejecutado otra vez.

Existen otras metas fuera del ciclo de vida de Maven y se puede ir añadiendo más metas mediante la configuración de plugins en el fichero de configuración. Una de estas metas de bastante importanciós es clean.

Instalación de Maven
Instalar Maven es extremadamente fácil, tan sólo es necesario ir a la sección de descargas de la página oficial de Maven (http://maven.apache.org/download.html)
y descargarlo (en zip o tar). Lo descomprimimos en una carpeta (P.Ej: C\Tools\Maven-2.1.0) y a continuación hemos de añadir la
carpeta bin de Maven en la variable de entorno PATH. Con esto ya estaría instalado. Para comprobar que todo ha ido bien podemos ejecutar el comando "mvn --version"

Creación de un proyecto
Una característica muy destacable de Maven es que nos permite crear un proyecto a partir de un arquetipo previamente definido, pero no necesariamente por nosotros. la lista de arquetipos podemos verla en aquí. Si nos fijamos en la lista podemos ver que con un simple comando podemos crear toda la estructura de un proyecto JSF, Spring, Struts y/o otros muchos más, y con cierta funcionalidad.
Por ejemplo, el comando para crear proyecto con el arquetipo de Spring es el siguiente:

mvn archetype:create -DgroupId=org.appfuse.archetypes -DartifactId=appfuse-basic-spring


Ésto no implica que no podamos partir desde cero, pero si tenemos en mente un cierto tipo de aplicación la puesta en marcha del proyecto será mínima.

Para crear un proyecto tán solo es necesario crear a mano la estructura de directorio que deseemos y crear el fichero POM en el directorio padre. La estrcutura típica es la siguiente

EjemploMaven
+---src
¦ +---main
¦ ¦ +---java //Para nuestros fuentes
¦ ¦ +--- paquetes
¦ ¦ +---...
¦ ¦ +---App.java
¦ +---test
¦ ¦ +---java //Para test de Junit
¦ ¦ +---paquetes...
¦ ¦ +---...
¦ ¦ +---AppTest.java
+---pom.xml


En paralelo a estos directorios y si lo necesitamos, podemos crear otros directorios. El nombre de estos nuevos directorios es standard en maven, el estandar lo podemos ver aquí.

El Fichero POM
Para usar maven en un proyecto tán sólo es necesario definr un fichero POM (Project Object Model), que es un fichero XML. Es el fichero de configuración de Maven donde inicialmente definiremos:
* El tipo de empaquetamiento (Jar, War, etc).
* Los directorios de fuentes y test.
* Los directorios de recursos para la aplicacion y los test.
* Las dependencias de nuestro proyecto

Además en este fichero definiremos todos los plugins, metainformación sobre desarrolladores, propiedades del proyecto etc.
--------

Como vemos Maven es un mundo muy interesante, pero muy extenso y como veo que el post esta cerciendo demasiado dejaré la configuracón del fichero pom y los comandos para la siguiente vez.

Saludos, nos vemos en la segunda parte.

No hay comentarios:

Publicar un comentario