jueves, 2 de mayo de 2013

Utilidad de MAVEN para aquellos que desarrollan en JAVA.

El mundo de JAVA está lleno de frameworks, estándares, tecnologías y tantas otras cosas que a veces no sabemos a dónde apuntar cuando buscamos mejorar nuestro trabajo. Dado el auge que tiene MAVEN es mi intención facilitarles un poco la elección de este framework.

Generalmente los proyectos en JAVA se deben:

  1. Crear.
  2. Gestionar sus dependencias y resolver conflictos entre versiones:-D
  3. Compilar.
  4. Crear su documentación.
  5. Probar.
  6. Generar reportes.
  7. Desplegar.

Y bueno así unas cuantas cosas más que hay que hacer para cada proyecto. ANT en principio resuelve estos problemas pero como quiera hay que configurar bastante y es por eso que otro framework (MAVEN) se ha erigido como el framework por defecto para la gestión de las tareas listadas anteriormente.

Para usar Maven solo tienen que descargarlo de http://maven.apache.org/download.html descompactarlo, poner la dirección de su ubicación en el path del sistema y comprobar que funciona con el siguiente comando: “mvn -version” sin las comillas desde cualquier ubicación. Si todo va bien puede darles una respuesta como esta:

clip_image002

Lo bueno de Maven es que como se está usando mucho ya se integra fácilmente con todos los IDE de desarrollo para JAVA. Existen plugins para eclipse y también viene para Netbeans. Lo que significa que lo mismo que se puede hacer con Maven a nivel de comandos se puede hacer a través de los IDE. Ahora veamos qué podemos hacer.

Si queremos crear un proyecto JAVA podemos ejecutar este comando en la consola:

mvn archetype:create -DgroupId=com.test.maven -DartifactId=ejemplo-de-prueba

Con esto le estamos diciendo a Maven que queremos crear un proyecto java usando como nombre del proyecto “ejemplo-de-prueba” y como estructura de paquetes “com.test.maven”

El resultado es el siguiente:

clip_image004

Para los curiosos el primer comando le dice a Maven que debe crear un proyecto usando un arquetipo o sea una especie de template preestablecido que le dice como crear un proyecto, en este caso es el más básico. De más está decir que existen múltiples arquetipos para diferentes tipos de proyecto, los cuales veremos en otras entradas.

En este caso la estructura creada es la siguiente:

clip_image005

En la raíz del proyecto encontraran un fichero que se llama pom.xml y es el corazón del funcionamiento de Maven y su contenido es el siguiente:

clip_image007

Como pueden ver tiene el groupId, el artifactId y la versión que pusimos en el comando cuando creamos el proyecto. Nos dice que el empaquetado es de tipo jar, o sea cuando compilemos se creará un jar. También nos dice que como dependencia tiene la librería junit en su versión 2.8.1 y es aquí donde entra otras de las funciones de Maven, la gestión de dependencias. En el proyecto de Spring JDBC que ya vimos antes teníamos que incluir varias librerías en el classpath del proyecto. Lo que haré ahora para mostrarles cómo trabajar con Maven es utilizar el proyecto que acabamos de crear y configurar sus dependencias.

. Este proyecto hace uso de las siguientes librerías:

  • Junit
  • spring-test.
  • spring-beans.
  • spring-core
  • spring-context.
  • spring-jdbc
  • postgresql.
  • commons-dbcp

Si no usara Maven tendría que descargar los jar de estos frameworks e incluirlos en el classpath de mi proyecto, pero con Maven solo tengo que incluirlos en el fichero pom.xml del proyecto con sus versiones.

La descarga de estas dependencias se realiza desde servidores MAVEN que hay en internet por lo que ustedes no deben preocuparse de donde están las dependencias.

Si queremos que este proyecto pueda ser usado desde un IDE como el eclipse debemos ejecutar entonces el siguiente comando: mvn eclipse:eclipse lo que le dará al proyecto la estructura de un proyecto eclipse. Luego solo tenemos que importarlo al eclipse como se importa cualquier otro proyecto.

Aquí les dejo adjunto el fichero pom  de mi proyecto para que actualicen el que se les ha creado.

Les muestro además como se ve una parte de este fichero:

clip_image009

Este trabajo con las dependencias también se puede hacer con el IDE que estén usando, en mi caso uso el Eclipse STS de Spring así que ya viene con un plugin para Maven y cómo pueden ver en las siguientes imágenes me dejan editar el fichero POM.

clip_image011

En la imagen pueden ver que creo un conjunto de propiedades donde especifico las versiones de las dependencias que estaré usando. De esta manera cuando quiera cambiar una versión solo debo modificarlo en la propiedad y no ir buscando en el fichero pom cada incidencia.

Las dependencias las pueden ver en esta otra imagen:

clip_image012

Aquí pueden ver las dependencias y como se enlazan con la propiedad que representa su versión. Si quisieran agregar una nueva dependencia lo pueden hacer dando clic en el botón Add y les saldría algo como lo siguiente:

clip_image013

Aquí lo que deben saber es el GroupId, ArtifactId y la versión de la dependencia. Yo cuando quiero saber eso voy a http://search.maven.org/ y ahí busco la dependencia y me muestra la información que necesito, incluso me da el segmento de la dependencia por si quiero agregarlo directamente al fichero POM, pero ya eso es a gusto del consumidor.

Como quiero usar la instalación de Maven que descargué debo ir a las preferencias del Eclipse (Windows/Preferences/Maven/Installation) e indicarle que quiero usar mi instalación de Maven y no la que viene por defecto con el IDE. Debe haberla detectado por defecto si pusieron la carpeta bin de Maven en el Path de su SO. Si no la detectó entonces deben buscarla y agregarla. Una vez hecho esto ya estamos en condiciones de compilar nuestro proyecto, aunque aún no tenga código útil, pero así descargaremos las librerías, dependencias + plugins, a nuestro repositorio local. Esta es otra ventaja de Maven ya que al tener las librerías localmente pues en caso de no tener internet por cualquier motivo aun podremos seguir trabajando sin problema, simplemente poniendo detrás de la línea de comando –o. ej: mvn clean compile –o. claro eso solo cuando deseen compilar o realizar alguna otra acción sin querer conectarse a los repos de internet.

Para compilar puede ejecutar este comando en la raíz del proyecto: “mvn clean compile” que lo que hace es eliminar las carpetas con código compilado en caso de existir y volver a compilar el proyecto.

Como lo harán por primera vez verán cómo se empiezan a descargar las librerías desde internet y al cabo de un rato les saldrá el mensaje de que se compiló con éxito el proyecto. Este paso depende de su velocidad de conexión ya que como es la primera vez se descargará todo. Una vez que tengan en su repositorio local las librerías ya no serán descargadas de nuevo a no ser que lo pidan explícitamente o hagan un cambio de versión.

En una próxima entrada veremos cómo usando este mismo proyecto que acabamos de crear podemos reimplementar el proyecto de spring con JDBC e incluirle la ejecución de pruebas usando JUnit y Spring.


¿Te ha gustado este Post? Compártelo con tus amigos.

No hay comentarios:

Publicar un comentario

IconIconIcon