Apache Maven Simplifica el Proceso de Construcción -- Incluso más que Ant

Sigue estos pasos para crear un sencillo proyecto Maven y ejecutar unos cuantos goals Maven:

  1. Crea el directorio del proyecto:
    c:\daven
  2. Crea un directorio para el código fuente Java:
    c:\daven\src\java
  3. Crea directorios para tu estructura de paquetes (smartsoft.daven.*):
    c:\daven\src\java\smartsoft\daven
  4. 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;
        }
    
    }
    
  5. 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.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.