Advertising:
Creacion y compilado de un proyecto maven
Viene de Tutorial de Maven
Creación de un proyecto[edit]
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:create
, con los siguientes parámetros
mvn archetype:create -DgroupId=com.chuidiang -DartifactId=proyecto1 -Dpackaging=jar
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 y será también el nombre del jar que se genere.
- packaging es de alguna forma el tipo de proyecto que queremos generar. Poniendo jar se creará un proyecto que genere un jar, es decir, una librería o aplicación de escritorio. Podemos poner war, ear, etc.
Si todo va bien, después de una serie de información de la ejecución del comando, obtendremos el mensaje BUILD SUCCESSFULL y se creará un directorio proyecto1 con la siguiente estructura
proyecto1 proyecto1/pom.xml proyecto1/src proyecto1/src/main proyecto1/src/main/java proyecto1/src/main/java/com proyecto1/src/main/java/com/chuidiang proyecto1/src/main/java/com/chuidiang/App.java proyecto1/src/test proyecto1/src/test/java proyecto1/src/test/java/com proyecto1/src/test/java/com/chuidiang proyecto1/src/test/java/com/chuidiang/AppTest.java
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[edit]
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.
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
proyecto1 proyecto1/pom.xml proyecto1/src proyecto1/src/main proyecto1/src/main/java proyecto1/src/main/java/com proyecto1/src/main/java/com/chuidiang proyecto1/src/main/java/com/chuidiang/App.java proyecto1/src/test proyecto1/src/test/java proyecto1/src/test/java/com proyecto1/src/test/java/com/chuidiang proyecto1/src/test/java/com/chuidiang/AppTest.java proyecto1/target proyecto1/target/classes proyecto1/target/classes/com proyecto1/target/classes/com/chuidiang proyecto1/target/classes/com/chuidiang/App.class proyecto1/target/maven-archiver proyecto1/target/maven-archiver/pom.properties proyecto1/target/proyecto1-1.0-SNAPSHOT.jar proyecto1/target/surefire-reports proyecto1/target/surefire-reports/com.chuidiang.AppTest.txt proyecto1/target/surefire-reports/TEST-com.chuidiang.AppTest.xml proyecto1/target/test-classes proyecto1/target/test-classes/com proyecto1/target/test-classes/com/chuidiang proyecto1/target/test-classes/com/chuidiang/AppTest.class
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-reposts y el jar de nuestro proyecto. Hemos destacado en negrita dicho 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.
Crear otro tipo de proyectos[edit]
He comantado que mvn archetype:create es un comando obsoleto. Maven aconseja ahora ejecutar mvn archetype:generate. Si lo ejecutamos sin parámetros, nos ira preguntado un montón de cosas:
- Primero el tipo de proyecto a generar, entre 41 posibles: proyectos appfuse, hibernate, spring, cocoon, groovy, etc, etc, (por defecto, un jar simple)
- groupId
- artifactId
- version (por defecto 1.0-SNAPSHOT)
- paquete inicial de las clases (por defecto lo que hemos puesto en groupId)
- Confirmación de los datos introducidos para crear el proyecto.
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).