|
Apache Maven Simplifica el Proceso de Construcción -- Incluso más que Ant |
Crear un Sencillo Proyecto Maven
Sigue estos pasos para crear un sencillo proyecto Maven y ejecutar unos cuantos goals Maven:
- Crea el directorio del proyecto:
c:\daven
- Crea un directorio para el código fuente Java:
c:\daven\src\java
- Crea directorios para tu estructura de paquetes (smartsoft.daven.*):
c:\daven\src\java\smartsoft\daven
- Crea una clase sencilla llamada Box con el nombre de fichero c:\daven\src\java\smartsoft\daven\Box.java:
package smartsoft.daven; public class Box { private int length; private int width; public Box(int length, int width) { this.length = length; this.width = width; } public int getArea(){ return length * width; } } - Crea un POM mínimo con el nombre de fichero C:\daven\project.xml:
<project> <id>daven</id> <currentVersion>1.0</currentVersion> <build> <sourceDirectory> ${basedir}/src/java </sourceDirectory> </build> </project>
Ahora, ejecuta uno de los goals de Maven, java:compile. Abre una consola de comandos, entra en tu directorio de proyecto (C:\daven), y teclea:
maven java:compile
Tu salida de pantalla debería parecerse a ésta:
C:\daven>
maven java:compile
java:prepare-filesystem:
java:compile:
[echo] Compiling to C:\daven/target/classes
BUILD SUCCESSFUL
Total time: 33 seconds
Observa que el goal java:compile tiene, como prerequisito, el goal java:prepare-filesystem. Un prerequisite de Maven es análogo a un depends de Ant.
Cuando mires tu sistema de ficheros, verás que Maven ha creado una estructura de directorio para tus ficheros de clases y ha situado en él las clases compiladas. También ha creado algunos otros directorios relacionados con las unidades de testeo, que discutiremos en breve. Aquí puedes ver a qué se parecerá tu estructura de directorios:
c:\daven
src
java
smartsoft
daven
Box.java
target
classes
smartsoft
daven
Box.class
test-classes
test-reports
Prueba algunos goals más. En la línea de comandos, teclea:
maven jar
Deberías ver una salida como ésta:
C:\daven>
maven jar
java:prepare-filesystem:
java:compile:
[echo] Compiling to C:\daven/target/classes
java:jar-resources:
test:prepare-filesystem:
test:test-resources:
test:compile:
[echo] No test source files to compile
test:test:
[echo] No tests to run
BUILD SUCCESSFUL
Total time: 6 seconds
Observa que el goal jar tiene otros varios goals como prerequisitos. Digamos:
java:prepare-filesystem java:compile java:jar-resources test:prepare-filesystem test:test-resources test:compile test:test
Observa, también que Maven ha creado un fichero JAR en el directorio fuente llamado daven-1.0.jar. Ha derivado el nombre del fichero de los elementos projectId y currentVersion de nuestro fichero project.xml. Ahora prueba el goal clean. En la línea de comandos, teclea:
maven clean
Tu salida de pantalla debería parecerse a esto:
C:\daven>
maven clean
clean:clean:
[delete] Deleting directory C:\daven\target
BUILD SUCCESSFUL
Total time: 7 seconds
Si examinas ahora tu sistema de ficheros, verás que la carpeta target ha desaparecido.
Entender los Goals
Hasta ahora hemos visto tres goals de Maven: java:compile, jar, y clean. Recuerda que aunque los goals de Maven son equivalentes a los Targets de Ant, no necesitas crear goals por tí mismo. Maven proporciona la mayoría de los goals que necesites. En estos momentos, Maven viene con unos 312 goals.
También debes tener en mente que los goals de Maven están organizados en plug-ins. De echo, la site de Maven describe la herramienta como "un pequeño corazón que trabaja con un satélite de plug-ins". La mayoria de las funcionalidades de Maven vienen en forma de plug-ins. Los plug-ins incluso proporcionan los prefijos para los nombres de goals. Por ejemplo, java:compile se refiere al goal compile del plug-in java. Y kodo:enhance se refiere al goal enhance del plug-in kodo. Si ejecutas un plug-in sin un nombre de goal, invocarás el goal por defecto de ese plug-in. Por ejemplo, maven jar invoca el goal por defecto del plug-in jar.
















































