INTRODUCCIÓN A ANT
Tareas básicas
Descripción
En este artículo vamos a hablar de las tareas más comunes que vienen implementadas por defecto en Ant. La versión utilizada es la 1.4.
Para aquellos que no conozcan Ant, existe un artículo previo que explica qué es Ant y cómo se usa.
javac
La tarea javac sirve para compilar uno o más ficheros fuente en Java. Únicamente se compilan los ficheros que no tengan un fichero .class actualizado (es decir, cuando no existe, o cuando existe pero es más antiguo que el fichero fuente).
Un ejemplo sencillo de uso es el siguiente:
Con esta tarea, se compilan todas las fuentes del directorio fuentes (que deben estar situados en el directorio actual). Las clases resultantes se guardan en el directorio classes (ídem). El classpath en el que buscar clases existentes es /home/jh/lib.
Este ejemplo es equivalente a ejecutar "javac -sourcepath fuentes -classpath /home/jh/lib -d clases *.java"
Por defecto, se utiliza el compilador disponible en el sistema. Para ello, la variable de entorno JAVA_HOME debe apuntar al directorio base del JDK disponible.
Sin embargo, es posible que queramos compilar con otro compilador distinto. Para ello, podemos modificar la propiedad "build.compiler". En el siguiente ejemplo se usa el compilador jikes:
Otros valores de esta propiedad son: classic (javac 1.1 y 1.2), modern (javac 1.3 y 1.4), kjc (del proyecto KOPI), gcj (de GNU), sj (de Symantec), extJava y jvc (de Microsoft).
Algunos de los atributos que admite esta tarea son:
- verbose: produce información más detallada sobre el proceso de compilación
- debug: indica si las clases generadas incluyen información de debug (por defecto, off)
- nowarn: pasa el modificador -nowarn al compilador, para que no genere mensajes de warning (por defecto, off)
- deprecation: pasa el modificador -deprecation al compilador, para que muestre información detallada sobre el uso de métodos en desuso (por defecto, off)
- target: genera código para una versión concreta de la máquina virtual, mediante el modificador target pasado al compilador (por ejemplo, target="1.1")
- optimize: indica al compilador que produzca código optimizado
- failonerror: indica si el compilador debe seguir compilando cuando encuentre errores (por defecto, true)
Un ejemplo de uso con todos ellos podría ser:
verbose="true" debug="true" nowarn="false" deprecation="false" target="1.2" optimize="true" failonerror="true"/> Existen más atributos, de uso más específico. Además, algunos pueden ser utilizados como elementos internos del elemento javac, en lugar de atributos. Para información detallada sobre todo ello, se recomienda consultar la documentación oficial de Ant. java La tarea java sirve para ejecutar una aplicación Java. Por defecto, la aplicación se ejecuta en la misma máquina virtual que el propio Ant. Algunos de los atributos más comunes son: Es posible indicar argumentos para la clase (o fichero .jar) a ejecutar. Para ello deben utilizarse elementos arg anidados, de la siguiente manera: Este ejemplo es equivalente a ejecutar "javac -claspath clases Prueba 1" Análogamente, es posible indicar argumentos para la máquina virtual, mediante elementos jvmarg anidados: También es posible determinar el valor de una propiedad de sistema mediante un elemento sysproperty anidado, de la siguiente manera: Las propiedades definidas de esta manera son accesibles desde el código Java, mediante el método System.getProperty(), pasando como parámetro el nombre de la propiedad ("prueba.nombre" en el ejemplo anterior). Existen otros atributos y opciones más específicos. Para más detalles se recomienda consultar la documentación oficial de Ant. javadoc La tarea javadoc sirve para generar la documentación de los fuentes en formato Javadoc. La mayor parte de sus atributos se corresponden con opciones del comando javadoc, por lo que se recomienda consultar la documentación oficial de javadoc. Un ejemplo de uso bastante completo sería el siguiente: packagenames="p1.sub1,p1.sub2,p2" verbose="true" author="true" locale="es_ES" nodeprecated="true" nodeprecatedlist="true" private="true" splitindex="true" version="true" windowtitle="Documentación de mi aplicación" doctitle="Aplicación" header="Documentación de mi aplicación" footer="Una aplicación interesante..." stylesheet="css/estilos.css" /> Algunos de los atributos más comunes de javadoc son: copy La tarea copy sirve para copiar ficheros y directorios, igual que cp en Linux o copy en MS-DOS y Windows. Por defecto, sólo se copian ficheros que sean más recientes que el destino o que sean nuevos. La forma de indicar qué ficheros hay que copiar es mediante atributos o mediante filesets. Los filesets serán explicados en un artículo posterior. De momento, utilizaremos algunos ejemplos sencillos: Para copiar un único fichero f, a otro f2: Para copiar un fichero f a un directorio d: Para copiar un directorio d1 a otro directorio d2: Para copiar todos los ficheros .xml a un directorio d: Los atributos de la tarea copy son: delete La tarea delete sirve para eliminar ficheros y directorios, igual que rm en Linux o delete en MS-DOS y Windows. Algunos ejemplos de uso son: Para borrar un único fichero f: Para borrar un directorio d entero, incluyendo los subdirectorios no vacíos: Para borrar los ficheros .class de un directorio d: Los atributos de delete son: mkdir La tarea mkdir sirve para crear un directorio. El único atributo que tiene es dir, con el directorio a crear. Un ejemplo de uso es: move La tarea move sirve mover uno o más ficheros o un directorio, a un nuevo directorio, igual que mv en Linux o move en MS-DOS y Windows. Por defecto, si el destino existe, es sobreescrito. Si la sobreescritura se deshabilita, el origen sólo es movido si es más reciente que el destino, o si éste no existe. Es posible usar filsets para seleccionar conjuntos de ficheros, al igual que con la tarea copy. Algunos ejemplos de uso son: Para cambiar de nombre un fichero, de f1 a f2: Para mover un fichero f a un directorio d: Para mover un directorio d1 a otro d2: Para mover todos los ficheros .xml a un directorio d: Los atributos de la tarea move son: chmod La tarea chmod sirve para cambiar los permisos de acceso de los ficheros. Esta tarea sólo tiene efecto en sistemas de ficheros UNIX, similar al comando chmod. Se recomienda consultar la ayuda del comando chmod (man chmod, info chmod o chmod --help) para más información. Un ejemplo sencillo de uso es el siguiente, para añadir el permiso de ejecución al propietario y al grupo del fichero: Si en lugar de un fichero se indica un directorio, se cambiarán los permisos del directorio pero no los permisos de los ficheros que hay en el mismo. Para cambiar los mismos permisos de todos los ficheros de un directorio d, usaríamos algo como: o alternativamente En el ejemplo anterior no se modifican los permisos del propio directorio (sí los permisos de los ficheros guardados en él). Los atributos de la tarea chmod son: touch La tarea touch sirve para cambiar la fecha y hora de modificación de un fichero. Por defecto, se asigna la fecha y hora actuales. En caso de que el fichero no exista, lo crea. Un ejemplo de uso es: Para indicar una hora concreta, se podría hacer: Es posible usar touch sobre un conjunto de ficheros, mediante un elemento fileset anidado. Para cambiar la fecha y hora de todos los ficheros de un directorio d, se usaría algo como: Los atributos de touch son: echo La tarea echo sirve para mostrar un mensaje en la salida estándar o en un fichero. Para mostrar un mensaje por pantalla: Para guardar un mensaje en un fichero de texto f, que será creado o sobreescrito: Para añadir un mensaje a un fichero f2, creándolo si no existe: sleep La tarea sleep sirve para producir un retardo de duración determinada. No se garantiza en absoluto que el retardo tenga la duración indicado, ni siquiera que llegue a producirse, ya que es una prestación que depende del sistema operativo, de la granularidad de su reloj, de la carga del sistema, etc. El tiempo a esperar se obtiene como la suma de las horas, minutos, segundos y milisegundos indicados. Alguno de estos valores puede ser negativo siempre y cuando la suma total sea positiva. Para esperar 1 hora, 20 minutos, 35 segundos y 500 milisegundos, usaríamos algo como: Además, es posible utilizar el atributo failonerror para detener la ejecución de ant en caso de que se produzca un error durante la espera. También es posibe usar sleep sin ningún atributo. En este caso no se produce ninguna espera. Simplemente, Ant cede el procesador a otros procesos del sistema. exec La tarea exec sirve para ejecutar comandos de sistema. Es posible indicar un sistema operativo en el que ejecutar el comando. En este caso, el comando sólo se ejecutará si el sistema operativo actual es el indicado. Un ejemplo muy básico, para listar en formato ancho el contenido de "C:" en un sistema Windows 2000: Los atributos más importantes de exec son: Es posible pasar variables de entorno al comando a ejecutar, de la siguiente manera: Fuente: http://www.javahispano.org/contenidos/es/ant_4_tareas_bsicas/#modulo_descargas