Home‎ > ‎Apuntes‎ > ‎

Maven - Generar un artefacto básico desde cero

La forma más simple y correcta (hoy en día) de generar un artefacto de Maven desde cero, es ejecutando el siguiente comando:

mvn archetype:generate

Lo que estamos haciendo es ejecutar el goal Generate que se encuentra en el plugin archetype. Este goal, que esta preparado para ser ejecutado en modo interactivo, permite establecer todas las opciones necesarias para crear un nuevo artefacto.

La primera pregunta que nos hace es el archetype que vamos a utilizar, nos permite seleccionar de una lista de los que ya se proveen con Maven, pero podriamos elegir otro al informarselo con una variable de entorno. Igualmente eso no aplica a lo que queremos hacer, queremos generar un artefacto básico. El mismo se va a basar en el archetype maven-quickstart, que es el número 15, y es el default, por lo que le damos enter.

A continuación nos va a pedir que le informemos el groupId para nuestro artefacto, se lo informamos y le damos enter.
Luego nos va a pedir el nombre del artefacto (artifcactId), lo ingresamos y le damos enter.
Nos solicita la versión para el artefacto y se la ingresamos o damos enter directamente para tomar el valor que nos propone (1.0-SNAPSHOT).

Despues de definir la identificación de nuestro artefacto, nos va a pedir configuración especifica del archetype que queremos generar, en este caso solamente nos va a pedir el nombre del package que va a usar nuestro artefacto.

Una vez que ingresamos todos los valores tenemos que validar los mismos, respondemos con Y a la pregunta.

De esta manera nos va a crear un directorio con el nombre del artefacto, dentro del mismo va a existir un archivo pom.xml con la información de nuestro proyecto, además va a generar la estructura de directorios mínima para tener una clase y su test. Nos crea para poder probar, una clase y su correspondiente test.

En este momento si ejecutamos

mvn test

Sobre el directorio recien creado (donde esta el pom.xml); va a compilar la clase de ejemplo y el test y ejecutar el test.

Un detalle que quedaría es establecer que quiero que me compile las cosas para Java 1.5.
Por default Maven genera los artefactos para ser compilados contra Java 1.3 (la realidad es que se puede compilar con cualquier versión, pero siempre manteniendo compatibilidad de binario y código con la versión 1.3)
Para hacer esto hay que modificar el pom.xml y agregarle los siguientes tags:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Lo único que estamos haciendo es configurar el plugin que invoca al compilador de java, como todo en Maven es un plugin, y puede ser configurado en extremo e incluso cambiado por otro.
Con eso estaría en condiciones de generar sus aplicaciones.

Recuerden algo sobre la estructura de directorios convencional (no por común, sino que es una convención).

 Directorio  Función
 /src/main/javaTiene los archivos fuentes (.java) de la aplicación. Estos archivos se compilaran para generar las clases del sistema.
 /src/main/resourcesTodos los archivos que no sean compilables, y que necesitan estar en el classpath de la aplicación deben ir en este directorio. Maven se encargará de copiarlos donde deberan quedar.
 /src/test/java En este directorio estan alojados todos los .java de los tests a correr. El plugin de Maven (se llama Surefire) se encargará de compilarlos y ejecutarlos, siempre y cuando sigan las convenciones de jUnit. Las clases que estan en este directorio pueden acceder a clases en este directorio y las que estan en src/main/java    
 /src/test/resources Funciona igual que el de src/main pero sirve para agregar o modificar recursos necesarios por los tests a ejecutar. Por ejemplo si tengo un properties con los datos de conexión a la base, quizás en src/main esten apuntando a una base de desarrollo, pero en este estará apuntando a una base embebida

Quiero usar Eclipse!!!

Para todos aquellos que quieren usar una IDE (que espero que sean todos!), es necesario generar los archivos del proyecto, para que la IDE los pueda leer como un proyecto.

La mejor alternativa es usar m2eclipse, un plugin de eclipse que tiene toda la onda.

Pero hay una forma menos intrusiva, y sin necesidad de plugin.

mvn eclipse:eclipse

Este comando genera toda la metadata necesaria para poder importar el proyecto desde eclipse, como un proyecto que ya existe (Existing Project).

Si agregan dependencias o algo es necesario correrlo otra vez, y si por alguna razón rompieron la configuración del proyecto, lo solucionan limpiando y volviendo a generarlo todo con

mvn eclipse:clean eclipse:eclipse

Comments