Una vez introducida la esta información, damos click en el botón
"Finish" tras lo cual NB creará en un directorio en nuestra computadora que contendrá dos clases y mirando dentro del explorador del NB podremos ver que el proyecto tiene la siguiente estructura.
Si nos fijamos en nuestro disco duro, NB ha creado una carpeta con la siguiente estructura:
La filosofía de la organización de Maven radica en que los proyectos hechos en Java siguen una estructura estándar dependiendo de su naturaleza (aplicación de escritorio, EJB, WAR, etc...). Es decir en nuestro caso le hemos dicho a NB que íbamos a crear un proyecto simple en Java con una clase principal que contiene un método main como punto de entrada, por lo que Maven (por medio de NB como intermediario) ha creado la carpeta de nuestro proyecto que contiene un archivo pom.xml y una carpeta src y una estructura predefinida.
Dentro de la carpeta src tenemos dos carpetas, una llamada main, que es donde colocaremos el código "funcional" de nuestra aplicación y una carpeta test que es donde
deberíamos, por default, colocar el código de nuestras pruebas unitarias.
Para continuar con la prueba de nuestra aplicación volvemos a nuestro NB, abrimos el explorador de proyectos y navegamos hasta la clase App.java y la abrimos. Damos click con el botón derecho del mouse y seleccionamos "Run File".
Si es la primera vez que ejecutas Maven verás que en la salida de consola de NB (Control + 4) empiezan a aparecer líneas de texto informando que Maven está descargando información (o más formalmente "
dependencias") de Internet, este proceso, dependiendo de tu velocidad de conexión tardará de dos a diez minutos, por lo que deberás ser paciente.
Una vez que Maven ha descargado todas las dependencias necesarias para ejecutarse veras que en la salida de NB aparece la línea
Hello World de nuestro proyecto de prueba.
Ya para finalizar...
Hasta este punto hemos creado, compilado e instalado una aplicación con un
groupId=sawbona.code, artifactid=maven.test y
version=1.0-SNAPSHOT. Para ver dónde es que vivirá nuestra aplicación abrimos nuestro sistema de archivos y en el caso de Windows abrimos la siguiente ruta:
C:\Documents and Settings\
sawbona\.m2\repository\sawbona\code\test.maven\1.0-SNAPSHOT
Dentro de esta carpeta debe existir un jar llamado
test.maven-1.0-SNAPSHOT.jar que corresponderá a nuestra aplicación ya empaquetada y lista para ser usada. Si nos fijamos en el nombre de este jar vemos que está conformado por el artifactId y por la versión que introdujimos en un principio. De la misma forma si nos fijamos en la ruta que estamos navegando vemos que está conformada por el groupId, donde cada punto lo trasforma a una nueva carpeta dentro del sistema de archivos, seguida por una carpeta que corresponde al artifactId y finalmente la versión de nuestro proyecto.
La otra mitad de la ruta (C:\Documents and Settings\
sawbona\.m2\repository) que estamos navegando corresponde a lo que Maven llama nuestro "
repositorio local" de dependencias. Cuando Maven necesita un jar para compilar un proyecto el primer lugar que analiza es su repositorio local en busca de los jars (también llamados dependencias) necesarios para compilar el proyecto en turno, estos jars (dependencias) nosotros los declaramos dentro del archivo de configuración de nuestro proyeto al cual Maven lo llama pom.xml. Por default maven primero busca en nuestro repositorio local y después va buscando en orden en diferentes repositorios ubicados en internet.
Si abrimos NB y miramos dentro de la carpeta Project Files de nuestro proyecto de prueba veremos un archivo llamado pom.xml y si miramos el contenido veremos una sección que reza así:
<modelVersion>4.0.0</modelVersion>
<groupId>sawbona.code</groupId>
<artifactId>test.maven</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>test.maven</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Cuando le dijimos a NB que creara nuestro proyecto, Maven agregó por default una dependencia a
junit versión 3.8.1. Si buscamos dentro de nuestro repositorio local veremos que existe la siguiente ruta:
C:\Documents and Settings\
sawbona\.m2\repository\junit\junit\3.8.1
Que es la ruta donde Maven ha descargado el jar de junit que incluirá como dependencia de nuestro proyecto y el cual aparece dentro de la carpeta de "Test Libraries" dentro del navegador de proyectos de NB.
También viendo el archivo pom.xml podemos ver que la información que introdujimos en el momento de la creación del proyecto con NB está plasmada en este archivo.
Así llegamos al punto final de esta entrada: el archivo pom.xml.
Este es el archivo principal de configuración de los proyectos hecho en y para Maven. En este archivo podemos configurar todo sobre maven: plugins, dependencias, reporteadores y una larga lista de etc. Estas modificaciones puedes ser hechas mediante un editor de texto plano como el NotePad++ o con una GUI destinada para estos propósitos. Cuando le decimos a NB que nos cree un proyecto hecho en Maven básicamente NB funciona como in termediario que manda a ejecutar unas tareas específicas de Maven (llamados plugins) para que cree un esqueleto básico (también llamado
archetype) y es este el que crea la estructura básica del proyecto junto con el archivo pom.xml que hemos analizado.
Y eso es todo. Esta es mi pequeña introducción a apache Maven con Netbeans que espero que a alguna persona le sea útil.
Saludos.