Creacion y compilado de un proyecto maven

De ChuWiki


Viene de Tutorial de Maven

Creación de un proyecto Maven[editar]

Una vez instalado maven, vamos a crear un proyecto java de escritorio. Desde una ventana de comandos nos vamos al directorio donde queramos crear nuestro proyecto y ejecutamos el comando obsoleto mvn archetype:generate, con los siguientes parámetros

mvn archetype:generate -DgroupId=com.chuidiang -DartifactId=proyecto1 -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart

El significado de los parámetros es el siguiente:

  • groupId es un identificador para agrupar varios proyectos que estén relacionados. Habitualmente suele ser el paquete inicial que queremos para todas nuestras clases en todos nuestros proyecto o grupos de proyectos. Yo suelo poner com.chuidiang.
  • artifactId es el nombre del proyecto. Usará este nombre para crear un directorio para nuestro proyecto y será también el nombre del jar que se genere.
  • version es el número de versión para empezar nuestro proyecto. Podemos poner el valor de versión que queramos. Habitualmente 1.0 o bien 0.1. La coletilla -SNAPSHOT suele ponerse para indicar que el proyecto está en desarrollo y que la versión puede tener cambios. Maven interpreta así esta coletilla y hace un tratamiento especial para versiones -SNAPSHOT.
  • archetypeArtifactId es para indicar qué tipo de proyecto queremos crear. Con maven-archetype-quickstart estamos indicando que queremos un proyecto java básico, un "Hola Mundo".

Si todo va bien, después de una serie de información de la ejecución del comando y una confirmación de los parámetros que hemos puesto, obtendremos el mensaje BUILD SUCCESSFULL y se creará un directorio proyecto1 con la siguiente estructura

Proyecto Maven Hola Mundo recién creado
Proyecto Maven Hola Mundo recién creado

Vemos que ha creado un directorio src/main/java para los fuentes, con un App.java que sólo tiene un "Hola Mundo". El paquete para esta clase es el que pusimos en el groupId (com.chuidiang). También ha creado un directorio src/main/test para los test de JUnit (o la herramienta que sea). En él ha creado un test de ejemplo AppTest.java.

Es importante el fichero pom.xml que ha creado justo en el directorio del proyecto. Este fichero pom.xml es en el que pondemos información y dependencias de nuestro proyecto. Tal cual lo ha creado es correcto, pero deberemos editarlo e ir poniendo cosas según nos haga falta o para ponerlo a nuestro gusto.

Compilar el proyecto Maven[editar]

De momento no vamos a tocar nada. Vamos simplemente a compilarlo para ver cómo se hace. Nos vamos dentro del directorio proyecto1 y tenemos dos comandos maven disponibles según lo que queramos hacer.


  • mvn compile compila las clases y genera los .class. Al hacerlo, creará un directorio target debajo del proyecto1, debajo de él un directorio classes y ahí irá metiendo los .class que genere.
  • mvn package compila las clases si no están ya compiladas y genera en el directorio target el fichero .jar de nuestro proyecto.

Listado de comandos Maven

No es necesario ejecutarlos en orden, si ejecutamos directamente mvn package, veremos como se van compilando las clases y se genera el jar, que quedará en el directorio target. Después de ejecutar ese comando, tendremos la siguiente estructura de directorios

Proyecto Maven recién compilado
Proyecto Maven recién compilado

Vemos que se ha generado un directorio target en el que se han metido los .class, los resultados de los test de JUnit debajo del subdirectorio surefire-reports y el jar de nuestro proyecto proyecto1-1.0-SNAPSHOT.jar. Además de ponerle proyecto1 en el nombre, le ha añadido el número de versión 1.0-SNAPSHOT. La parte SNAPSHOT para maven significa que es un proyecto todavía en desarrollo y que esta versión no es definitiva. Más adelante veremos que maven trata de forma especial los jar cuyas versiones terminen en SNAPSHOT.

Finalmente, el comando mvn clean borraría el directorio target con todo su contenido. Se suele ejecutar si queremos compilar todo desde cero. Si no lo ejecutamos, maven mirará si los .java son más modernos que los .class existentes para compilar sólo los que han sufrido modificaciones.

Se puede configurar maven-compiler-plugin para cambiar la versión Java de los class generados

Integrar Maven con un IDE[editar]

Normalmente no trabajaremos con un proyecto, aunque sea Maven, desde ventana de comandos. Afortunadamente, los IDE de desarrollo más conocidos integran Maven.

Maven Archetype Plugin[editar]

El comando mvn archetype:generate es una de las posibilidades el plugin Archetype de Maven. Este plugin permite crear proyectos Maven. Hemos usado su opción sencilla, un proyecto Java "Hola Mundo".

Pero permite crear más tipos de proyectos. Si no pones cualquiera de los parámetros -D que hemos pueso en el ejemplo, te preguntará por él. En concreto, si no pones -DarchetypeArtifactId=maven-archetype-quickstart te mostrará una lista de cerca de 3300 posibles tipos de proyectos a generar. Por defecto, si no seleccionas ninguna opción en esa lista y dejas la opción por defecto, creará un maven-archetype-quickstart, igual que hemos hecho antes.

Según qué tipo de proyecto, maven creará la estructura de una forma u otra, generará determinados ficheros de ejemplo en determinados directorios (como en el caso del App.java con un "Hola Mundo" como acabamos de ver) y lo más importante de todo, nos bajará de internet todos los jar de los que dependemos y los colocará en un sitio en que él pueda encontrarlos cuando compile (veremos más adelante cómo y dónde).

Otros tipos de proyectos