Agregando tareas al script de ANT en un proyecto de NetBeans

06nov08

Si queremos agregar tareas adicionales al script de ANT que NetBeans genera para un proyecto ,por ejemplo para actualizar archivos, generar ejecutables, etc. , primero que nada deberemos entender donde NetBeans organiza las tareas de compilación, empaquetamiento, generación de javadoc, etc.

NetBeans genera dos archivos de ANT:

  • nbproject/build-impl.xml
  • build.xml

Podremos verlos desde la pestaña de Archivos del IDE:

ubicacion de scripts ant

En el primero de ellos (build-impl) es donde realmente se implementan todas las tareas y es donde se encuentran definidos los puntos de enganche donde nosotros podremos incorporar tareas. NO es recomendable editar este archivo.

El archivo build.xml es el que se invoca cada vez que hacemos build, clean & build, run, etc. Él simplemente importa todas las tareas definidas en el archivo build-impl:

build.xml

Aquí es donde podremos (y debemos) sobrescribir las tareas provistas para tal fin. Los puntos de enganche definidos son los siguientes:

  • antes de la inicialización de las propiedades del proyecto (-pre-init)
  • después de la inicialización de las propiedades del proyecto (-post-init)
  • antes de la compilación mediante javac (-pre-compile)
  • después de la compilación mediante javac (-post-compile)
  • antes de la compilación de un archivo solo mediante javac (-pre-compile-single)
  • después de la compilación de un archivo solo mediante javac (-post-compile-single)
  • antes de la compilación de los test de JUnit mediante javac (-pre-compile-test)
  • después de la compilación de los test de JUnit mediante javac (-post-compile-test)
  • antes de la compilación de un archivo de test de JUnit solo mediante javac (-pre-compile-test-single)
  • después de la compilación de un archivo de test de JUnit solo mediante javac (-post-compile-test-single)
  • antes de construir el Jar (-pre-jar)
  • después de construir el jar (-post-jar)
  • después de limpiar los archivos generados anteriormente (-post-clean)

Entonces lo que hacemos es simplemente escribir la(s) tarea(s) elegida(s):

<target name="-pre-jar">
       < !—aquí incluimos el codigo -->
 </target>

Por ejemplo, modificaremos el archivo build.xml para mostrar algunos mensajes personalizados:

< ?xml version="1.0" encoding="UTF-8"?>

<project name="testANT" default="default" basedir=".">
    <description>Builds, tests, and runs the project testANT.</description>
    <import file="nbproject/build-impl.xml"/>

    <target name="-pre-compile">
        <echo>Compilando....</echo>
    </target>

    <target name="-post-compile">
        <echo>Fin de la compilacion</echo>
    </target>

    <target name="-pre-jar">
        <echo>Armando el JAR...</echo>
    </target>

    <target name="-post-jar">
        <echo>JAR construido</echo>
    </target>

    <target name="-post-clean">
        <echo>Limpieza de archivos generados anteriormente</echo>
    </target>
</project>

Ahora si realizamos “Clean and Build” obtendremos en la ventana de Output algo como esto:

salida del script modificado al hacer "clean and build"

Adicionalmente podemos sobrescribir cualquiera de las tareas principales de buil-impl. Por ejemplo si queremos mantener una copia del último jar generado antes de borrarlo podríamos modificar la tarea:

<target depends="init" name="-do-clean">
        <delete dir="${build.dir}"/>
        <delete dir="${dist.dir}"/>
</target>

Sobrescribiéndola de la siguiente forma en el archivo build.xml:

<target depends="init" name="-do-clean">
        <delete dir="${build.dir}"/>

        <!-- evita errores si dist.dir no existe -->
        <mkdir dir="${dist.dir}" />
        <copy todir="backup">
            <fileset dir="${dist.dir}" />
        </copy>
        <echo>Guardada copia de dist</echo>
     
        <delete dir="${dist.dir}"/>
</target>

Manteniendo una copia aún después de realizar un “clean”:

copia del dist realizada

De esta forma podemos no solo agregar funcionalidades en los puntos predefinidos (anteriormente listados) sino que podemos llegar a sobrescribir por completo las tareas de ANT.

Se puede descargar el proyecto de ejemplo (aprox. 9.3kB) de: http://lefunes.googlecode.com/files/modificar_ANT_netbeans.zip. En él se incluye el proyecto en NetBeans 6.5 creado para este post.

Espero les sirva
Saludos

About these ads


4 Responses to “Agregando tareas al script de ANT en un proyecto de NetBeans”

  1. 1 Sergio

    Muchas gracias por el aporte. Me fue muy útil

  2. 2 yech

    Gracias mi pana. Me fue muy útil. Saludos.-

    • 3 Juan Manuel

      Muy buena info! Gracias! Consulta, dónde se puede consultar el listado completo de comandos que pueden emplearse en éste script (mkdir, copy, fileset, echo…)

  3. 4 Melany

    Gracias, muy bien explicado.



Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: