Empezar a utilizar Maven en un proyecto Java

Cuando realizamos proyectos Java siempre tenemos varias tareas que realizar. La primera suele ser crear una estructura de directorios pensando en un hueco para los archivos fuentes, otro para iconos, ficheros de configuración o datos, directorio para dejar los .class o el .jar, para dejar el javadoc, etc, etc.

También existen otras tareas que realizamos con cierta frecuencia, como borrar los .class, compilar, generar la docume

Seguramente también dependamos de otros jar como, como drivers debase de datos, JUnit para clases de test, log4j para nuestra salida de log, etc, etc. Tendremos que copiar todos esto jar externos en algún sitio de nuestro proyecto e incluirlos.

Una primera herramienta que nos ayuda un poco con todo esto es ant. Sin embargo, con ant no tenemos todas estas tareas hechas y debemos reescribir posiblemente nuestro fichero build.xml (el de tareas que se ejecutan con ant) de un proyecto a otro. También tendremos que copiar los jar externos de los que dependemos.

Para todo esto llegó hace bastante tiempo Maven.

Según la wikipedia Maven es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Estuvo integrado inicialmente dentro del proyecto Jakarta pero ahora ya es un proyecto de nivel superior de la Apache Software Foundation.

Vamos manos a la obra:

Instalando Maven en windows

-Añadimos a la variable Path la ruta” C:\Users\Jesus\apache-maven-3.0.4\bin” –> Para ello

inicio->equipo (clic derecho)-> propiedades-> Configuración avanzada del sistema nos aparecerá la siguiente pantalla

Aquí es donde debemos añadir la ruta

Comprobamos que todo ha ido bien. Para ello abrimos un cmd y escribimos

>mvn --version 

Creando proyectos

Especificar un archeotype en Maven es como decirle que plantilla de proyecto queremos utilizar.

Por ejemplo, para crear nuestro proyecto java basta con hacer:

>mvn archetype:create -DgroupId=com.PRS.demoapp -DartifactId=PRSNegocio

El resultado de ejecutar este comando es la siguiente estructura de directorios y ficheros:

PRSNegocio |-- pom.xml `-- src     |-- main     |   `-- java     | `-- com     | `-- PRS     | `-- demoapp     | `-- App.java     `-- test         `-- java             `-- com                 `-- PRS                     `-- demoapp                         `-- AppTest.java 

Esta es la estructura estandar. Lo más molón de todo esto es el fichero pom.xml. Es un fichero que contiene datos de configuración de nuestro proyecto, como dependencias con otros jar, tipos de informes que queremos en la página web de nuestro proyecto, etc.. Inicialmente contiene una serie de cosas por defecto que podremos cambiar si lo deseamos.

Fichero Pom.xml

Con packaging se indica el tipo de empaquetado que hay que hacer con el proyecto. Podemos usar jar, war, ear, pom.

Con version se indica la versión del proyecto con la que estamos trabajando. Al indicar SNAPSHOT se quiere decir que es una versión evolutiva, es decir que estamos trabajando para obtener al versión 1.0.

También podemos ver como dentro de dependencies se describen las dependencias del proyecto. Ahora tenemos una dependencia de junit para poder compilar y ejecutar los tests. Dentro de la descripción de las dependencias es interesante destacar el elemento scope que indica que tipo de librería se trata. Podemos distinguir:

  • compile – es el valor por defecto. Se utiliza en todos los casos (compilar, ejecutar, …).
  • provided – también se utiliza en todos los casos, pero se espera que el jar sea suministrado por la JDK o el contenedor. Es decir, no se incluirá al empaquetar el proyecto, ni en el repositorio.
  • runtime – no se utiliza para compilar, pero si es necesario para ejecutar.
  • test – Sólo se utiliza para compilar o ejecutar los test.
  • system – es similar a provided, pero eres tu el que tiene que suministrar el jar. No se incluirá al empaquetar el proyecto, ni en el repositorio.

Bueno ya hemos visto el fichero pon.xml y ¿ahora que?

En este fichero es donde definimos las dependencias de nuestro proyecto, en nuestro caso esta definida una dependencia para crear Test con JUnit, pero podríamos definir una dependencia con el driver de MySQL.

<dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>5.0.3</version>             <scope>runtime</scope> </dependency>

Comandos básicos (compilar, ejecutar…)

Ahora mismo, sin haber escrito ni una línea ya podemos hacer todas las tareas habituales (esto con Ant no sería tan fácil ;):

  • $ mvn compile – compila el proyecto y deja el resultado en target/classes
  • $ mvn test – compila los tests y los ejecuta
  • $ mvn package – empaqueta el proyecto y lo dejará en taget/PRSNegocio-1.0-SNAPSHOT.jar
  • $ mvn install – guarda el proyecto en el repositorio
  • $ mvn clean – borra el directorio de salida (target)

Estas tareas son estándar, por lo que un desarrollador puede saltar de un proyecto a otro y siempre sabrá compilar, empaquetar, …

Para saber más sobre el ciclo de vida de Maven se puede leer http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

 Para finalizar

Para crear un proyecto web, solo tendríamos que cambiar el archeotype así:

>mvn archetype:create -DgroupId=com.PRS.demoapp -DartifactId=PRSWeb -DarchetypeArtifactId=maven-archetype-webapp

O para un portlet de Liferay

>mvn -e archetype:create -DgroupId=com.PRS.portlet -DartifactId=maven-portlet -DarchetypeArtifactId=liferay-portlet-archetype -DarchetypeGroupId=com.liferay.maven.archetypes -DarchetypeVersion=6.0.2-SNAPSHOT

Este post es solo una introducción, en otro post hablaremos sobre el plugin M2eclipse para integrar todo esto en eclipse de manera más fácil.

Referencias

http://www.chuidiang.com/java/herramientas/maven.php

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=maven

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mavenliferay

http://milen.commsen.com/2009/10/creating-liferay-portlet-with-liferay-maven-sdk.html

Anuncios

Un comentario sobre “Empezar a utilizar Maven en un proyecto Java

  1. hola!!, me produce un error:
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2
    .4:create (default-cli) on project standalone-pom: Unable to parse configuration
    ……
    ……
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    mi versión es;
    Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:4
    7+01:00)
    Maven home: C:\Program Files\apache-maven-3.3.9
    Java version: 1.7.0_75, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.7.0_75\jre
    Default locale: es_MX, platform encoding: Cp1252
    OS name: “windows 7”, version: “6.1”, arch: “x86”, family: “windows”
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    al final lo logre cambiando:

    mvn archetype:generate -DgroupId=com.PRS.demoapp -DartifactId=PRSNegocio

    solo cambie la palabra “create” por “generate” a que se debe?

    Me gusta

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s