construyendo aplicaciones con apache ant

Upload: miguel-angel-rodriguez-manzano

Post on 10-Jul-2015

816 views

Category:

Documents


6 download

TRANSCRIPT

Apache Ant

Construyendo aplicaciones con Apache Ant

Ttulo: Autor: Versin: Curso: Lugar:

Construyendo aplicaciones con Apache Ant Miguel ngel Rodrguez Manzano 1.4 (Martes 20 de Febrero de 2007) Arquitecto Java en Tecnologa J2EE (2006-2007) Forman Centro de formacin e innovacin de Andaluca Parque Tecnolgico de Andaluca C/ Severo Ochoa, 30 29590 Campanillas (Mlaga)

-1-

NDICE DE CONTENIDOS 1.- INTRODUCCIN.............................................................................3 1.1.- Qu es Ant?.................................................................................3 1.2.- Un poco de historia......................................................................3 1.3.- Por qu Ant?...............................................................................4 2.- INSTALACIN................................................................................5 2.1.- Descarga.......................................................................................5 2.2.- Estructura de Ant.........................................................................5 2.3.- Instalacin...................................................................................5 2.4.- Variables de entorno...................................................................6 3.- CONCEPTOS BSICOS....................................................................7 3.1.- Tareas..........................................................................................7 3.2.- Propiedades.................................................................................8 3.3.- Targets.........................................................................................10 3.4.- Dependencias..............................................................................11 3.5.- Referencias..................................................................................12 3.6.- Rutas...........................................................................................13 3.7.- Recursos......................................................................................15 4.- EL ARCHIVO DE CONSTRUCCIN.................................................18 4.1.- Proyecto .......................................................................18 4.2.- Propiedad .................................................................19 4.3.- Target ............................................................................21 4.4.- Nuestro primer archivo de construccin.....................................22 5.- TAREAS..........................................................................................26 5.1.- Tareas segn su funcionalidad.....................................................27 5.2.- Tareas bsicas..............................................................................33 5.3.- Tareas opcionales........................................................................60 6.- EJEMPLOS.....................................................................................67 6.1.- Aplicacin HolaMundo bsica..................................................67 6.2.- Aplicacin HolaMundo, usando JUnit 4...................................67 6.3.- Servlet HolaMundo desplegable...............................................67 7.- RECURSOS ADICIONALES.............................................................68 7.1.- Tutoriales.....................................................................................68 7.2.- Pginas web.................................................................................69 7.3.- Libros...........................................................................................71 8.- FUENTES........................................................................................73 9.- HISTORIAL.....................................................................................75 -2-

1.- INTRODUCCIN. 1.1.- Qu es Ant?Apache Ant es una herramienta software pensada para automatizar todos los repetitivos procesos que habitualmente han de llevarse a cabo entorno al desarrollo genrico de cualquier aplicacin: la compilacin, construccin (build en ingls) y prueba de aplicaciones software desarrolladas, fundamentalmente, usando el lenguaje de programacin Java. Ant es similar en concepto al clsico make caracterstico de ciertos entornos de desarrollo, pero est escrito en lenguaje Java y, por tanto, hace uso de la plataforma Java y se adecua mejor que este ltimo a la construccin de proyectos de software de aplicaciones Java. La diferencia ms notoria entre Ant y make es que Ant usa XML para describir los procesos de construccin y sus dependencias, mientras que make tiene su propio formato para escribir un makefile. Apache Ant es un proyecto de la Fundacin Apache Software y, por tanto, de cdigo-abierto (open-source en ingls) y libre distribucin, bajo los trminos generales dispuestos en la licencia Apache Software License.

1.2.- Un poco de historia.Ant fue concebido por James Duncan Davidson, durante el proceso de conversin de un producto de Sun en un proyecto de cdigo-abierto. Este producto, el motor (engine) de implementacin de referencia de la especificacin JSP/Servlet (que ms tarde sera conocido como Apache Tomcat). La herramienta make, de cdigo cerrado, era la que por aquellos entonces se usaba en el proyecto para compilarlo en el sistema operativo Solaris. No obstante, en el frondoso mundillo de la comunidad open-source no haba forma posible de controlar en qu plataformas se compilaba el proyecto Ant fue creada como una herramienta simple e independiente de la plataforma para compilar dicho proyecto siguiendo una serie de directivas bsicas dadas en un fichero de construccin (build file) escrito en XML, que, por defecto, tiene el nombre build.xml. La versin 1.1 de Ant fue oficialmente liberada al pblico como una herramienta independiente propiamente dicha el 19 de Julio de 2000. Desde estos humildes comienzos, la herramienta no ha parado de crecer en funcionalidades y popularidad, hasta alcanzar y quizs, incluso superar al propio Tomcat. Para terminar, se dice que su nombre viene de un acrnimo que vendra a significar algo como Another neat tool (Otra herramienta guay en ingls). As mismo, es una curiosa coincidencia que la palabra ant (hormiga en ingls) apareciera en el artculo Recursive make considered harmful (El make recursivo considerado peligroso) de Peter Miller (un artculo que describa los problemas de construccin de la herramienta make que ms tarde Ant se propondra resolver) como nombre en algunas estructuras de los proyectos que, a modo de ejemplo, se utilizaban en dicho artculo. -3-

1.3.- Por qu Ant?Una buena pregunta, desde luego. A lo largo de estos ltimos aos, Ant se ha convertido en uno de los iconos del mundillo open-source Java. Para una inmensa mayora de los desarrolladores, ya es un hecho comn el ver un fichero build.xml acompaando a todo proyecto software que se precie Existen otras herramientas para la compilacin y construccin de aplicaciones software basadas en tecnologas Java, como, por ejemplo, la emergente Apache Maven o JavaMake, entre otras. Entonces, por qu elegir Ant?

Independencia de la plataformaUno de los factores fundamentales para la consecucin de este enorme xito y para los que Ant fue ideado en un principio es, sin duda alguna, la independencia prcticamente absoluta de la plataforma de desarrollo que, gracias a las tecnologas Java y XML, puede ofrecer Ant. Desde que Ant estuvo disponible, ya no fue necesario tener que usar confusos makefiles con comandos Unix o tener que escribir engorrosos scripts o archivos de procesado por lotes (aquellos socorridos .BAT) en Windows para poder construir nuestras aplicaciones. Tampoco era ya necesario distinguir entre la barra / de Unix y la barra invertida \ de Windows para especificar las rutas de ficheros, puesto que Ant permita al desarrollador usar su convencin favorita y la adaptaba.

Estandarizacin del proceso de construccinPara la construccin de nuestras aplicaciones ahora slo es necesaria una nica herramienta, que sabemos que funciona siempre de la misma forma (escribiendo ant y el target deseado) y que podemos analizar y modificar fcilmente su comportamiento (a travs del archivo de construccin) para adaptarlo a nuestras necesidades.

Sencilla integracin con JUnitAdems de eso, Ant hace gala de otras caractersticas importantes y de gran valor a la hora de afrontar el desarrollo de proyectos de software serios haciendo uso de herramientas libres. Por ejemplo: una de las ms importantes es la facilidad de Ant para integrar pruebas de unidad JUnit en el proceso de construccin de nuestras aplicaciones. Esto ha provocado el que Ant haya impulsado a muchos desarrolladores a adoptar modelos de desarrollo conducidos segn las pruebas (test-driven), o programacin extrema.

Extensiones: hasta el infinito y ms allSe te quedan cortas las potentes capacidades que te ofrece Ant? Quieres personalizar an ms ciertos procesos para tus proyectos? No hay problema. Ant, proporcionando una API propia sobre la que trabajar, permite la definicin de tareas y procesos personalizados al mximo que ponen a disposicin de los desarrolladores capacidades extraordinarias. Por nombrar someramente algunas de las ms importantes: pruebas JUnit, compilacin .NET (existen libreras, as como una versin especfica de Ant para .NET, llamada NAnt), salida JSP, EJB, JavaCC, cabeceras C para JNI, validacin XML, as como facilidades de comunicaciones como FTP, multimedia con imgenes y sonido, o ejecucin de todo tipo de comandos y scripts. -4-

2.- INSTALACIN. 2.1.- Descarga.Vamos a proceder a instalar Ant en nuestra mquina. Para ello, en primer lugar, acudimos a la pgina oficial del proyecto, ubicada en la siguiente URL: http://ant.apache.org Acudimos a la seccin de descargas de la pgina web (haciendo clic en Download / Binary distributions) y bajamos un fichero que tendr un nombre similar a apache-ant1.7.0-bin, donde 1.7.0, o la que corresponda en su caso, es la versin de la herramienta.

2.2.- Estructura de Ant.Una vez descargada la herramienta, descomprimimos sus ficheros en el disco duro y nos encontramos con la siguiente estructura: ant | +--- bin | +--- lib | +--- docs | +--- etc Diversos ficheros de texto, sobre todo con informacin bsica Scripts para el lanzamiento de la aplicacin Contiene libreras jar de Ant, y otras para dependencias Contiene la documentacin de Ant (de obligada lectura ;-) Contiene otros archivos (xsl para generar informes, ...)

Los directorios que ms habremos de visitar sern normalmente lib, para aadir libreras requeridas por ciertas tareas adicionales que queramos usar y que tengas otras libreras no incluidas con la distribucin de Ant como dependencia, o, de vez en cuando, el directorio docs, cuando necesitemos consultar la documentacin del proyecto.

2.3.- Instalacin.La instalacin de la aplicacin es tan sencilla como simplemente descomprimir la herramienta en el disco duro, renombrando el directorio llamado apache-ant-1.7.0 a simplemente ant, por comodidad. Ant, siendo prcticamente independiente de la plataforma en que es usado, no usa ninguna estructura de datos de ningn sistema operativo para almacenar datos de configuracin propios, salvo algunas variables de entorno que, a continuacin, en las siguientes lneas, pasaremos a establecer.

-5-

2.4.- Variables de entorno.Ant slo requiere para su funcionamiento del establecimiento de unas pocas variables de entorno en nuestro sistema operativo, bsicamente para localizar la ruta de la herramienta. Son las siguientes:Variable Contenido

ANT_HOME PATH JAVA_HOME

Ruta donde est instalado Ant. Hay que aadirle el directorio bin de Ant. Ruta donde est instalado el JDK de Java.

La variable JAVA_HOME es posible que ya la tengamos establecida correctamente si previamente hemos instalado el Kit de Desarrollo Java (Java Development Kit, o ms escuetamente, JDK) en nuestro sistema. La variable de entorno PATH es bastante comn en muchos sistemas operativos. Se usa para comunicar al sistema operativo en cuestin rutas del disco donde se ubican aplicaciones que queremos que estn alcanzables desde cualquier parte del rbol de directorios del sistema. A continuacin, vamos a sugerir como hacer esta mnima configuracin para los sistemas operativos ms comunes:

Microsoft Windows y OS/2Encontrndonos en el intrprete de comandos, y asumiendo que tenemos Ant instalado en el directorio C:\ant y el JDK de Java en C:\jdk, habremos de usar el comando set para instanciar las variables de entorno de la siguiente manera: set ANT_HOME=c:\ant set PATH=%PATH%;%ANT_HOME%\bin set JAVA_HOME=c:\jdk

Linux/Unix (bash)Suponiendo que Ant est instalado en /usr/local/ant y el JDK en /usr/local/jdk export ANT_HOME=/usr/local/ant export JAVA_HOME=/usr/local/jdk export PATH=${PATH}:${ANT_HOME}/bin

Linux/Unix (csh)setenv ANT_HOME /usr/local/ant setenv JAVA_HOME /usr/local/jdk set path=( $path $ANT_HOME/bin ) Tener un enlace simblico o, en este caso, una variable de entorno que apunte a la ltima versin del JDK hace ms fcil las actualizaciones a nuevas versiones del mismo.

-6-

3.- CONCEPTOS BSICOS.A continuacin, vamos a explicar ciertos conceptos bsicos que conviene conocer previamente al uso de la herramienta. Estos conceptos bsicos, tales como target o dependencia pueden resultarte familiares si ya has lidiado con el clsico make u otras herramientas de construccin. No obstante, conviene saber cmo estn definidas en Ant. Adems de esto, Ant aade otros conceptos bsicos propios muy importantes, como son las tareas, propiedades, targets, dependencias, referencias, o los recursos.

3.1.- Tareas.Una tarea es una etiqueta XML vlida que puede aparecer en el archivo build.xml. Una tarea equivale a algn proceso que Ant puede llevar a cabo por nosotros: borrar o renombrar ficheros, comprimirlos, compilar cdigo fuente, ejecutar pruebas, etc, etc Las tareas Ant (como etiquetas XML del archivo de construccin que son) pueden tener atributos, as como, en su caso, elementos anidados.

...

Ms adelante, entraremos en ms detalle del funcionamiento de las tareas, enunciando listados de las tareas de Ant atendiendo a diversos criterios, y pasaremos a explicar con relativo nivel de detalle las tareas ms importantes. Las tareas ms bsicas y comnmente usadas, estn agrupadas en la documentacin de Ant bajo el nombre de core tasks (tareas del ncleo de la herramienta). Adems de estas tareas bsicas predefinidas e incluidas con Ant, que forman el corpus primordial de funcionalidades que necesitaremos habitualmente, existen tareas opcionales, optional tasks. Para usarlas, normalmente slo habr que importar una serie de libreras en los directorios necesarios de Ant. Finalmente, para los ms inquietos, Ant tambin proporciona una completa API repleta de todo tipo de funcionalidades de la que podemos hacer uso para crear nuestras propias tareas personalizadas para los ficheros de construccin de nuestros proyectos. -7-

3.2.- Propiedades.Las propiedades son una serie de datos guardados, similares a variables, que se definen mediante una etiqueta especial vlida en el archivo de construccin: la etiqueta property, aunque tambin pueden establecerse a travs de un fichero externo. Una propiedad tiene un nombre y un valor; el nombre es sensible a maysculas y minsculas. Una propiedad puede aparecer como valor en los atributos de cualquier tarea. La forma habitual de definir el nombre y valor de una propiedad tiene esta estructura: Para referenciar su valor donde sea necesario, habremos de escribir el nombre de la propiedad entre llaves empezando por un smbolo de dlar: ${nombre.propiedad} En una propiedad podemos guardar, por ejemplo, el nombre de los directorios por defecto de compilacin, valores de entorno, directorio de salida javadoc, etc Por ejemplo, la siguiente lnea define una propiedad src.dir, que mantendra guardada la ruta relativa al proyecto donde encontrar las clases de la aplicacin: Tras esto, cada vez que queramos referenciar el directorio donde se alojan las clases de la aplicacin, slo tendremos que escribir ${src.dir}. Esto facilita el mantenimiento del archivo de construccin y una mayor flexibilidad a la hora de afrontar cambios en cualquiera de los procesos de la construccin de la aplicacin. As pues, las propiedades nos ayudan a establecer, controlar y parametrizar la lgica del proceso de construccin. No obstante, no podemos comprobar o comparar el valor de una propiedad, slo podemos consultar si una propiedad est establecida o no. Para poder comprobar condiciones ms complejas, se recomienda crear targets especficos de comprobacin, normalmente etiquetados en su nombre con el sufijo check. Por ejemplo, la siguiente lnea define una tarea que comprueba la existencia de la clase TestCase del framework JUnit necesaria para llevar a cabo las pruebas de unidad de la aplicacin, y establece la propiedad junit.instalado segn proceda:

-8-

Finalmente, hay que comentar que las propiedades pueden establecerse en archivos de construccin, pero tambin a travs de un fichero externo con: En el archivo de propiedades, podemos establecer los valores para algunas propiedades predeterminadas de Ant o establecer las nuestras propias para configurar el proceso de construccin para que se ajuste al mximo a nuestras necesidades siendo adems de fcil modificacin ante posibles cambios (simplemente editando algunas lneas de un fichero de texto). Un extracto de un fichero build.properties relativamente comn en cualquier proyecto podra ser el siguiente:build.properties # # Base build properties # #javac options # http://ant.apache.org/manual/CoreTasks/javac.html # sun javac build.compiler=javac # jikes compiler #build.compiler=jikes # generic compiler options build.verbose=false build.fork=true build.deprecation=false build.nowarn=true # optimize only works with a few compilers build.optimize=true # Change this var to build to a different Java version java.target_version=1.5

Como puede observarse, es muy comn definir todo tipo de propiedades entorno a las opciones de compilacin del cdigo fuente, empezando incluso por el propio compilador a usar (cada vez es mayor el nmero de alternativas al compilador de Sun), opciones de compilacin, y diversas rutas de directorio, tanto para la localizacin de ciertas libreras, ficheros fuente o rutas de salida para los productos del proceso de construccin.

-9-

3.3.- Targets.Un target u objetivo (de construccin) no es ms que es un conjunto de tareas referenciadas bajo un nombre representativo, que debera ilustrar el objetivo (nunca mejor dicho) a conseguir al que estn enfocada la ejecucin de dicho target. La definicin habitual de un target tiene el siguiente aspecto general: ... definicin del target ... Normalmente, siguiendo una convencin no escrita, los nombres de objetivos ms habituales que los desarrolladores suelen escribir para Ant son:Nombre del target Objetivo a realizar

main, default, all... init clean prepare compile test, junit... jar javadoc

Objetivo por defecto: suele ejecutar todos los dems targets. Procesos varios de inicializacin para la construccin. Borra los archivos de bytecode (*.class) de la aplicacin. Crea la estructura de directorios apropiada en el disco. Compila el cdigo fuente de la aplicacin. Realiza las pruebas internas o JUnit de la aplicacin. Empaqueta la aplicacin en un Java ARchive. Genera la documentacin de nuestra aplicacin con javadoc.

Nota, por supuesto, que estos objetivos no estn predefinidos en Ant, sino que el desarrollador tiene que escribirlos adecuadamente en el fichero build.xml para cada aplicacin. Evidentemente, cada desarrollador puede llamar a la tarea con un nombre a su eleccin (por poner un ejemplo relativamente habitual, usando su lengua verncula: quedando compile como compilar en castellano, o kompilieren en alemn). No obstante, estos nombres aqu enumerados suelen ser los ms habituales. Se muestran adems como referencia, puesto que nosotros, en mayor o menor medida, siempre vamos a tener que definir targets muy similares a esos. Como mnimo, siempre habremos de definir un target para poder compilar nuestro cdigo fuente, aunque ser habitual definir algunos ms a poco que nuestro proyecto sea de una cierta envergadura. A veces, pueden aparecer targets con nombres que incluyen un guin como -init. Esto suele ser una convencin que indica que dicho target no ha de llamarse desde la lnea de comandos, sino que es para uso interno del proceso de construccin.

- 10 -

3.4.- Dependencias.Una dependencia es una relacin de anterioridad en el tiempo o en secuencia entre los targets. Por la propia naturaleza del proceso de construccin de una aplicacin, ciertos pasos, targets u objetivos tienen que ir antes que otros. El ejemplo tpico de dependencia es el que se da siempre entre los targets compilar y empaquetar en un archivo jar: no tiene sentido empaquetar primero y compilar despus, puesto que empaquetaremos los archivos de bytecode generados anteriormente y no los actualizados. Es necesario que cualquier herramienta de construccin que defina targets proporcione algn medio de definir las dependencias entre ellos. En el caso de Ant, las dependencias se enumeran en el atributo depends de la etiqueta target. Por ejemplo: ... definicin del target ... En la expresin anterior tenemos un bloque de definicin de un target llamado compile (que compilar nuestro cdigo fuente y generar los archivos bytecode *.class), que, para que pueda ser ejecutado, habrn de ejecutarse previamente los targets junit (pruebas de unidad JUnit) y prepare (creacin de la estructura de directorios de salida). El atributo depends de Ant slo especifica el orden en el que los targets deberan ser ejecutados, no especifican una necesidad de que los targets previos tengan que ejecutarse y acabar bien. As pues, un target podr ejecutarse incluso si todos los targets de los que depende se hayan ejecutado con errores o hayan fallado. Ant intenta ejecutar dichos targets en el orden en el que aparecen en el atributo depends (de izquierda a derecha), pero no necesariamente ocurrir as. Todo depender de las dependencias concretas que haya establecidas en cada caso particular. Supongamos que tenemos el siguiente ejemplo de targets con dependencias:

Si ejecutamos el target D, podra pensarse que, segn el orden especificado, el primer target en ejecutarse ser el C, seguido del B y el A Pero, no es as! Como podemos ver en el propio cdigo, C depende de B, y B depende de A, as que el primero en ejecutarse es A (que no tiene ninguna dependencia), luego B, C y, finalmente, D. Todos los targets, independientemente de en el nmero de otros targets en los que aparezcan como dependencia, se ejecutarn una nica vez. Es decir, si en el ejemplo anterior se ejecuta el target A, despus, al ejecutarse el B, aunque B dependa de A, como A ya se ha ejecutado, no es necesario que A vuelva a ejecutarse.

- 11 -

3.5.- Referencias.A algunos elementos del fichero de construccin se le puede asignar una referencia identificativa para poder reutilizarlo posteriormente. Esta posibilidad es muy til a la hora de definir elementos repetitivos con ciertos valores concretos o trozos de cdigo XML que necesitamos usar un nmero muy grande de veces a lo largo del fichero de construccin. As pues, las referencias posibilitan la reutilizacin de cdigo y facilitan un muy rpido mantenimiento de los ficheros de construccin frente a posibles cambios. Slo hemos de incluir un atributo id con el nombre de referencia en la definicin y luego referenciarlo usando mismo nombre cuando lo necesitemos a travs del atributo refid. Por ejemplo, imaginemos que tenemos el siguiente trozo de cdigo:

Si definimos por separado un elemento que agrupe las rutas que se incluyen en el elemento classpath y le asignamos un nombre de referencia, como, por ejemplo, classpath.aplicacion, podremos reescribir el cdigo anterior de la siguiente manera:

- 12 -

3.6.- Rutas.Ant define instrumentos muy convenientes para poder especificar rutas de ficheros o directorios, para que, posteriormente, puedan ser manejados por las dems entidades del archivo de construccin.

Elementos de ruta locales a una tarea En Ant, para definir y agrupar informacin de rutas que queremos aplicar en la tarea local, se usa el elemento , que tiene dos atributos: location y path, que, a su vez, pueden especificarse alternativamente como atributos del mismo nombre de un elemento anidado .Atributo Descripcin

location pathElemento anidado

Especifica una ruta nica (absoluta o relativa) de un fichero o directorio. Lista de rutas separadas por ; o :. Este atributo est pensado con la idea de especificar rutas predefinidas, en otro caso, debera optarse por usar mltiples elementos anidados con atributos location.DescripcinAtributo Descripcin

pathelement

location path

Idntico al atributo location. Idntico al atributo path.

Hay que comentar, adems, que dentro de la etiqueta pueden colocarse una o ms colecciones de recursos (los recursos y colecciones de recursos se explican un poco ms adelante) como elementos anidados para aadir ms rutas. Evidentemente, estas colecciones habrn de contener recursos de un tipo apropiado (rutas o ficheros). Dichos recursos se aaden en el orden en que se especifican en el archivo de construccin, aunque colecciones como , , y no tienen especificada una relacin de orden. Para ms detalles, acude al apartado dedicado a los recursos y colecciones de recursos.Ejemplos:

Si tenemos una propiedad classpath ya definida, especificar dicha propiedad para usar dentro de la tarea actual es tan sencillo como: Este mismo ejemplo puede abreviarse usando el atributo path propio: Un ejemplo tambin habitual es el que enumera una lista de archivos de librera: - 13 -

Elementos de ruta globales Si queremos definir una estructura que contenga rutas de fichero que podamos reutilizar un nmero indeterminado de veces, usaremos un elemento al mismo nivel que los targets con un cierto nombre de referencia, que usaremos para acceder a l. Esta funcionalidad es fundamental para poder mantener nuestros archivos de construccin (sobre todo en el caso de aplicaciones complejas o grandes proyectos) de forma fcil, ordenada, potente y, no menos importante, gil a la hora de su mantenimiento. Los atributos y elementos anidados de son exactamente los mismos que los de . No obstante, los volvemos a reproducir aqu como referencia:Atributo Descripcin

location pathElemento anidado

Especifica una ruta nica (absoluta o relativa) de un fichero o directorio. Lista de rutas separadas por ; o :. Este atributo est pensado con la idea de especificar rutas predefinidas, en otro caso, debera optarse por usar mltiples elementos anidados con atributos location.DescripcinAtributo Descripcin

pathelement

location path

Idntico al atributo location. Idntico al atributo path.

Dentro de la etiqueta , igual que ocurra con , pueden colocarse una o ms colecciones de recursos (los recursos y colecciones de recursos se explican un poco ms adelante) como elementos anidados para potenciar las facilidades de especificacin de rutas. Por supuesto, estas colecciones habrn de contener recursos de un tipo apropiado (rutas o ficheros). Como siempre, dichos recursos se aaden en el orden en que se especifican en el archivo de construccin, aunque colecciones como , , y no tienen especificada una relacin de orden. Como veremos ms adelante, define una coleccin de recursos implcita, por tanto, dentro de un elemento pueden anidarse, a su vez, otros elementos .Ejemplos:

Forma habitual de uso del elemento , con y sin elementos anidados: Definicin un formado por una ruta predefinida (que consta de una lista de dos libreras, separas por un punto y coma ;) y un archivo suelto adicional: - 14 -

- 15 -

3.7.- Recursos.Los recursos son entidades abstractas con capacidades de lectura y escritura de datos y propiedades, a la manera de los ficheros. Para manejar el acceso a sus atributos, la implementacin de un recurso deber proporcionar los medios para leer y/o escribir contenido de dicho recurso. Aunque el concepto de recurso en Ant data de la versin 1.5.2 de la herramienta, el uso explcito de los mismos es mucho ms reciente, de la versin 1.7, as que es posible que no se vean mucho an en la mayora de ficheros de construccin, pero su enorme potencial asegura que sern adoptados masivamente por los desarrolladores.

Recursos predefinidosRecurso Descripcin

resource file url string propertyresource javaresource zipentry tarentry gzipresource bzip2resourceEjemplos:

Recurso bsico. Todos los dems tipos de recurso derivan de este tipo. Un archivo accesible desde el sistema de ficheros local. Una URL de un recurso accesible desde un sistema remoto. Una cadena de texto Java del tipo String. Es de slo lectura. Representa una propiedad de Ant. Representa un recurso Java cargable a travs del Java classloader. Representa una entrada de un archivo ZIP. Representa una entrada de un archivo TAR. Da soporte GZip a una coleccin de recursos anidada en su interior. Da soporte Bzip2 a una coleccin de recursos anidada en su interior.

As pues, por ejemplo, si queremos definir cierto fichero de nuestra aplicacin como un recurso para poder acceder a l en la definicin de nuestro fichero de construccin, podramos hacer: Otros ejemplos:

Con estos recursos bsicos tenemos la suficiente funcionalidad para hacer uso de prcticamente cualquier recurso que necesitemos para la construccin de nuestras aplicaciones, pero slo podemos cargarlos de uno en uno. Imaginemos que necesitamos especificar cientos o miles de recursos; la tarea se hara muy tediosa. Para facilitarnos la vida en ese caso, Ant soporta tambin colecciones de recursos. - 16 -

Colecciones de recursosLas colecciones de recursos son entidades abstractas que pueden agrupar un nmero indeterminado de recursos individuales para facilitar su gestin. Algunos de los tipos de datos clsicos de Ant han sido rediseados para comportarse como colecciones de recursos. Este es el caso de todos los tipos de datos relacionados con conjuntos de ficheros y propiedades:Coleccin Descripcin

fileset, dirset, filelist, path y sus derivados tarfileset zipfileset propertyset

Colecciones bsicas para el manejo de grupos de ficheros. Todas ellas contienen mltiples referencias a recursos de tipo file. Puede contener recursos file o tarentry segn la configuracin. Puede contener recursos file o zipentry segn la configuracin. Contiene un conjunto de recursos propertyresource.

Adems de estas, se aaden una nueva serie de colecciones predefinidas:Coleccin Descripcin

resources files restrict sort first tokens union intersect difference

Coleccin de recursos genrica. Coleccin de archivos similar a fileset. Filtra una coleccin de archivos a los que cumplen ciertos criterios. Coleccin de recursos ordenada segn algn criterio. Selecciona los n primeros elementos de la coleccin anidada. Tokens de cadenas de caracteres (recursos string) recogidos de la coleccin de recursos anidada. Conjunto unin de las colecciones de recursos anidadas. Interseccin de las colecciones de recursos anidadas. Diferencia de las colecciones de recursos anidadas.

Las colecciones de recursos permiten a los usuarios de Ant especificar referencias a una gran variedad de tipos de recursos, de forma ms cmoda y potente. Esto facilita el diseo de los archivos de construccin, puesto que cierto conjunto de ficheros se puede conseguir de muchas formas distintas, y cada desarrollador puede elegir la forma con la que se sienta ms cmodo.

- 17 -

Ejemplos:

Definicin de un classpath local a una tarea en la que usamos colecciones de recursos para incluir y excluir ficheros y directorios concretos. El siguiente cdigo construye un elemento classpath que contiene el valor de la propiedad classpath, seguido de una lista de todos los archivos con extensin jar del directorio lib, el directorio classes, todos los directorios classes (el patrn de ruta ** encaja con cualquier cadena de ruta de longitud variable) bajo el directorio apps (excluyendo aquellos que incluyan la cadena Test en su nombre), y, finalmente, los archivos especificados por el referenciado. Ejemplo importante. Definicin de un elemento global con un nombre de referencia ruta.base con la ruta bsica de bsqueda de clases de la aplicacin, que incluye: las rutas guardadas en la propiedad classpath, todos los archivos jar de librera del directorio lib, as como todas las clases alojadas en el directorio classes. Ntese que, a diferencia de los ejemplos de cdigo anteriores (que estaban ubicados en el interior de alguna tarea), este ejemplo est fuera de cualquier tarea y target, de hecho, al mismo nivel que los targets del archivo de construccin. Suponiendo que tenemos definido el ejemplo anterior, podemos referenciar al elemento de nombre ruta.base desde dentro incluso de otro :

- 18 -

4.- EL ARCHIVO DE CONSTRUCCIN.El archivo de construccin, normalmente llamado build.xml, es el elemento fundamental de informacin sobre el que se sustenta Ant para guiar el proceso de construccin de nuestra aplicacin. En el archivo de construccin el desarrollador puede definir con todo detalle las opciones, funcionalidades, la secuencia y el comportamiento del proceso de construccin. Tras instalar Ant en nuestra mquina, deberemos proceder a escribir nuestro propio fichero de construccin para poder construir nuestra aplicacin. En la siguiente seccin procederemos a explicar ms detalladamente las tareas bsicas del mismo. Para cada tarea, describiremos su funcin, explicaremos sus atributos y mostraremos una serie de ejemplos relevantes para la ocasin.

4.1.- Proyecto .El proyecto es la estructura de mayor alto nivel en la jerarqua de Ant. Todo archivo de construccin build.xml ha de tener uno y slo un proyecto. En esta etiqueta se contendr informacin bsica para la especificacin del proceso de construccin. Veamos:Atributo Descripcin

name basedir default

Nombre de nuestro proyecto. Generalmente, el nombre de la aplicacin. Directorio base. La ruta del disco raz del proyecto. Se puede especificar de antemano tambin mediante la propiedad basedir. Si no se especifica, por defecto se usa el directorio base donde se encuentra el fichero build.xml. Target por defecto. Si no se especifica este atributo, Ant generar un target por defecto que ejecutar todas las tareas de ms alto nivel.

As pues, si queremos especificar un proyecto para nuestra aplicacin, llamada Formanager y situada en la ruta C:\Proyectos\Formanager, escribiramos: ... definicin del proyecto ...

No obstante, si el archivo build.xml va a estar colocado en el mismo directorio base que se indica (lo ms habitual), para una mayor generalidad, se recomienda usar . (referencia local al directorio actual) como directorio base. As pues, quedara: ... definicin del proyecto ... Recordemos que el archivo de construccin es un fichero XML y debe contener en su primera lnea la cabecera de todo archivo XML. De ah la primera lnea del ejemplo.

- 19 -

4.2.- Propiedad .Mediante la etiqueta property (en realidad es una tarea, pero es tan bsica que hemos preferido explicarla fuera de la seccin dedicada a las tareas) podemos guardar informacin para el control del flujo del proceso de construccin en una propiedad, o un conjunto de propiedades, que se podrn establecer explcitamente desde la propia etiqueta, o bien que se leern desde un archivo o un recurso externo. Las propiedades tienen un nombre y pueden tener un valor, siempre sensibles al caso (es decir, que se distinguen maysculas/minsculas). Una propiedad puede tener valor o no (en cuyo caso se dice que la propiedad no est establecida, en ingls is not set), y eso es lo nico que vamos a poder comprobar de las mismas: si una propiedad est establecida o no; no podemos comprobar el valor concreto de una propiedad. Las propiedades, adems, son inmutables. Es decir, que una propiedad que recibe un valor (queda establecida a cierto valor) ya no puede cambiar de valor durante el resto del proceso de construccin. Visto as, las propiedades se comportan de una forma ms similar a las constantes que a las variables.Atributo Descripcin

Nombre que queremos darle a la propiedad. Valor de la propiedad. Establece la propiedad a la ruta absoluta/relativa al basedir del proyecto. Nombre de referencia de un objeto (p. ej., de un u otra propiedad). El nombre de recurso del archivo de propiedades. El nombre de archivo del archivo de propiedades. Una URL desde la cual leer las propiedades. El prefijo a anteponer ante variables de entorno. Si especificamos environment=entorno, podremos acceder a las propiedades del sistema environment operativo con entorno + . + nombre variable. P. ej., para la variable PATH sera entorno.PATH, y para acceder a su valor ${entorno.PATH}. Ntese que se distinguen maysculas y minsculas: es PATH y no Path. classpath El classpath en el que buscar el recurso. classpathref El classpath dado como referencia a un definido donde sea. Prefijo que se le aplicar a las propiedades usando file o resource. Se le prefix anexa un punto . al final del prefijo si no se especifica. Es decir, con prefix=forman, las propiedades se llamarn forman.nombrepropiedad. Viendo esto, podemos darnos cuenta de que hay 6 formas de establecer valores para las propiedades de nuestra aplicacin: 1) Proporcionando su nombre (name) y un valor (value). 2) Proporcionando su nombre (name) y una referencia (refid) a otra propiedad. 3) Proporcionando un nombre de archivo (file) del archivo de propiedades desde el cual cargar las propiedades. Este archivo de propiedades tiene el mismo formato definido por el fichero utilizado en la clase java.util.Properties. 4) Proporcionando una URL (url) apuntando a un fichero de propiedades vlido. 5) Proporcionando el nombre de un recurso (resource) que contenga el fichero de propiedades a utilizar. 6) Estableciendo el atributo environment con un prefijo. Se le podr dar valor a las propiedades anteponiendo el prefijo dado y un punto al nombre de la variable. - 20 -

name value location refid resource file url

Aunque es posible utilizar combinaciones de estas formas, no se recomienda hacerlo. Debera usarse una nica forma de establecer cada una de las propiedades, ya que, por ejemplo, podran producirse errores si las propiedades no se establecen en el orden esperado. El atributo valor de las propiedades puede perfectamente contener referencias a otras propiedades. Dichas referencias se resolvern en el justo momento en que la propiedad es establecida. Esto tambin es as para las propiedades cargadas desde fichero.

Propiedades predefinidasAdems de las propiedades que podemos definir nosotros, Ant define una serie de propiedades predefinidas para su funcionamiento interno que puede convenirnos conocer para consultarlas y hacer uso de ellas en ciertos momentos.Propiedad Descripcin

La ruta absoluta del directorio base del proyecto, tal cual se estableci en el atributo basedir de la etiqueta . ant.file La ruta absoluta del fichero de construccin usado. ant.version La versin de Ant. El nombre del proyecto que estamos construyendo, tal cual se ant.project.name estableci en el atributo name de la etiqueta . La versin de la JMV (Mquina Virtual Java) que ha detectado Ant. ant.java.version Actualmente puede contener los valores 1.2, 1.3, 1.4 y 1.5. Directorio raz de Ant. NOTA: Esta propiedad es establecida por el ant.home script lanzador de Ant, y podra no tener valor en entornos integrados de desarrollo (o IDEs), como Eclipse o NetBeans, que hagan uso de Ant. basedir

- 21 -

4.3.- Target .Mediante la etiqueta target modelaremos las funcionalidades de los procesos de nuestro fichero de construccin. De un target hemos de especificar obligatoriamente su nombre, y, a partir de ah, posibles dependencias con otros targets o alguna propiedad que habr de estar establecida (o no) para que dicho target sea ejecutado.Atributo Descripcin

name depends if unless description

Nombre del target. Atributo obligatorio. Lista de nombres de targets separados por comas de los que este depende. Nombre de una propiedad que debe estar establecida (tener algn valor) para que este target sea ejecutado. Nombre de una propiedad que no debe estar establecida (es decir, que an no se le haya dado ningn valor) para que este target sea ejecutado. Breve descripcin textual de la funcin del target.

As pues, la forma general de un target se parecer a la siguiente: ... definicin del target ...

Si tenemos un target que slo queremos que se ejecute solamente cuando se den ciertas condiciones, podemos definir targets de comprobacin, como mencionbamos en el apartado que dedicamos a las propiedades. Podemos usar la tarea condition para comprobar cierta condicin y, en base a ello, establecer o no una propiedad a algn valor. Por ejemplo, si queremos comprobar la existencia de ciertos ficheros antes de ejecutar un target, podramos definir algo similar a lo siguiente: INFO: Los archivos historial.txt y changelog.txt estn presentes.

Como podemos ver, lo que realmente hacemos es crear un target de comprobacin del que depender el target principal y en el que comprobaremos la condicin que nos interesa. Es una buena opcin tener un target genrico de comprobacin de mltiples propiedades, que, adems, sea ejecutado, siempre que sea posible, al principio del flujo de la construccin del proyecto.

- 22 -

4.4.- Nuestro primer archivo de construccin.Despus de haber comprendido los conceptos bsicos de la herramienta, as como sus tareas ms fundamentales, estamos en condiciones ya de ir poniendo en prctica todos nuestros recin adquiridos conocimientos realizando un primer ejemplo de archivo de construccin. Para ello, vamos a ir desarrollando un ejemplo bsico de fichero de construccin ambientado en unas condiciones lo ms generales posibles, yendo paso a paso, y explicando en detalle cada una de nuestras acciones. 1) Creamos un archivo de construccin para nuestro proyecto, preferiblemente llamado build.xml. Puedes crearlo con tu editor de textos favorito, aunque, para mayor comodidad y productividad, se recomienda un editor especfico de archivos XML. NOTA: si usamos un editor de textos que no codifique el archivo de texto de salida con una codificacin Unicode UTF-8 podemos tener problemas. Ant rechazar, arrojando un error en dicho caso, cualquier archivo que no pueda leer correctamente. Especialmente problemticos (estas cosas se dicen por experiencia propia) pueden ser caracteres como las tildes () que puedan contener los comentarios de nuestro archivo de construccin. 2) Aadimos la cabecera XML bsica al archivo. 3) Definimos nuestro proyecto de construccin: tendr el nombre (name) de, por ejemplo, HolaMundo, su directorio base (basedir) ser el mismo en el que est colocado el archivo de construccin (por tanto, el directorio actual o .) y su target por defecto ser el target todo, que ejecutar todos los targets disponibles. ... definicin del proyecto ... 4) Una vez definido nuestro proyecto, seguimos escribiendo ya dentro de su bloque. Definimos las propiedades generales del proyecto. Conviene definir unas cuantas propiedades bsicas, segn nuestro propio criterio, con (al menos) rutas para la localizacin de nuestros archivos, as como para guardar los archivos compilados de bytecode, o la ruta de salida de la documentacin generada por javadoc, entre otras.

Como podemos ver, estamos generando una serie de propiedades para hacer referencia a ciertas rutas de nuestro proyecto usando una de las propiedades predefinidas de Ant, basedir, que ya hemos establecido anteriormente al definir nuestro proyecto.

- 23 -

5) Vamos definiendo uno por uno todos los targets que vamos a necesitar. Primeramente, definiremos el target por defecto todo, que estar vaco y que lo ms importante a tener en cuenta es que tendr en su atributo depends los nombres de todos los dems targets que queramos que se ejecuten cuando se ejecute el target por defecto. Esto forzar a Ant a ejecutar todos esos targets del archivo de construccin que han sido especificados en el depends, luego ejecutar el target todo (vaco) y terminar. 6) Definimos el resto de targets. Lo ms habitual es definir los targets segn el orden lgico en el que van a ejecutarse habitualmente, es decir, si lo primero que se va a hacer generalmente es compilar el cdigo fuente, lo ms intuitivo es definir el target compilar en primer lugar, y as sucesivamente. Como podemos ver, el target compilar no depende de ningn otro, as que es candidato para ser ejecutado el primero de todos. Adems, podemos observar que se ha usado una tarea que an no hemos visto: . Esta tarea es una de las tareas bsicas (Core tasks) de Ant, que nos permite compilar un rbol de archivos Java. En el atributo srcdir le indicamos la localizacin de la raz de nuestro rbol de archivos de cdigo fuente Java (localizacin que ya definimos en la propiedad dir.fuentes) y en el atributo destdir le indicamos el directorio raz al cual copiar los archivos de bytecode generados tras la compilacin (esta ruta tambin la guardamos en la propiedad dir.clases). Para ms informacin sobre la tarea , puedes consultar la seccin Tareas bsicas de este mismo documento, o acudir a la documentacin oficial de Ant. El target empaquetar, que depende de la ejecucin previa de compilar, ejecuta una tarea , que se encargar de empaquetar nuestra aplicacin en un archivo JAR ejecutable (se incluye para ello una referencia al archivo de manifiesto en el atributo manifest). Como podemos observar, la ruta del archivo de salida (destfile) ser el subdirectorio jar, contenido en la propiedad dir.jar y el archivo se llamar como el nombre del proyecto, haciendo uso de la propiedad predefinida ant.project.name. Los archivos incluidos sern todos aquellos que se encuentren en el directorio dado por el atributo basedir.

- 24 -

El target documentar, que no depende de la ejecucin previa de ningn otro para ejecutarse, lleva a cabo una tarea , que se encarga de generar la documentacin de nuestra aplicacin a partir de su cdigo fuente usando la herramienta javadoc de Sun, proporcionada como parte del JDK (Kit de Desarrollo Java). Para ms informacin sobre dicha herramienta y su uso, acuda a la documentacin oficial de Sun Microsystems. 7) Cerramos el bloque de proyecto y revisamos nuestro cdigo. Una vez que hemos definido todos los targets de nuestro fichero de construccin, ya hemos terminado. Lo nico que nos queda por hacer es cerrar el bloque del proyecto con (que es siempre la ltima lnea de cualquier fichero de construccin de Ant) y, despus, siempre viene bien revisar nuestro cdigo para repasar lo que estamos haciendo y buscar cualquier errata.

- 25 -

Nuestro primer archivo de construccin: cdigo completoUna vez que hayamos terminado con todos los pasos necesarios para escribir el archivo de construccin, nos habr quedado algo similar a lo siguiente:build.xml

Target por defecto completado.

- 26 -

5.- TAREAS.En la siguiente seccin vamos a hablar con relativa profundidad de unas cuantas tareas que podemos usar en Ant para poder sacar adelante los procesos de construccin personalizados de nuestras aplicaciones. Dejaremos fuera de este documento todas aquellas tareas que se salgan de nuestro entorno de trabajo ms habitual: el proceso de desarrollo de aplicaciones Java J2SE/J2EE robustas, su documentacin, prueba, empaquetado y, finalmente, su despliegue en un servidor de aplicaciones. Las tareas ms sencillas se explicarn en detalle. Sin embargo, en las tareas ms complejas slo entraremos en un nivel de detalle suficiente para explicar el uso ms general y facilitar la comprensin de las mismas. Obviamente, no tiene sentido referenciar todas las posibilidades de la seleccin completa de las tareas Ant en este documento, ya que excedera en demasa de su carcter docente y de introduccin. Para poder consultar el funcionamiento y uso de todas las tareas de que dispone Ant, con una descripcin completa y en detalle, lo mejor es acudir a su excelente manual, a la seccin Ant Tasks (Tareas Ant), donde puede consultarse informacin tanto de tareas bsicas como opcionales. El manual de Ant viene ya incluido de serie con el archivo de distribucin de la herramienta, as como tambin est disponible actualizado en su pgina web oficial a travs de la siguiente direccin: http://ant.apache.org/manual/ Como ya habamos mencionado anteriormente, una tarea Ant se corresponde en el fichero de construccin con una etiqueta XML, que puede tener atributos (llamados parmetros en la terminologa de Ant) y elementos anidados, que son ciertas etiquetas interiores que nos servirn para especificar diversas opciones de la tarea concreta. Siempre que sea importante detallar estos elementos para comprender el funcionamiento de una determinada tarea, se incluir una explicacin concisa sobre su funcin. El aspecto de una tarea habitual con elementos anidados tiene el siguiente aspecto: Hay que comentar tambin que hay algunos tipos especiales de tareas con ciertas caractersticas, como las tareas que heredan de MatchingTask, y que tienen una serie de atributos adicionales. A continuacin, sigue una explicacin someras de tareas que, ya sean bsicas u opcionales, nos convendr conocer en nuestro entorno habitual de trabajo y desarrollo. Happy Ant-ing! - 27 -

5.1.- Tareas segn su funcionalidad.Las tareas de Ant pueden reunirse en diversos grupos atendiendo a su funcionalidad. Para disponer de una referencia rpida de las mismas, y facilitar su localizacin cuando necesitemos consultar si Ant dispone de cierta tarea, aqu sigue una enumeracin de todas las tareas de Ant agrupadas segn su tipo de funcionalidad. Puedes consultar esta informacin totalmente actualizada acudiendo tambin al manual oficial de Ant, en su apartado Overview of Ant Tasks, del que esta seccin supone una mera traduccin y adaptacin al castellano. Se ha decidido incluir este apartado del manual casi tal cual porque es una forma muy rpida y clarificadora de comprender la divisin de las tareas de Ant, y como referencia nos ser muy valiosa.

Listado (no exhaustivo) de tareas segn su funcionalidad(Ant versin 1.7)

Archive TasksTarea Descripcin

bunzip2 bzip2 cab ear gunzip gzip jar manifest rpm signjar tar unjar untar unwar unzip war zip

Descomprime un archivo comprimido con GZip o BZip2. Comprime un archivo usando el algoritmo GZip o BZip2. Crea un archivo CAB de Microsoft. Extensin de la tarea para facilitar la creacin de archivos EAR. Descomprime un archivo GZip. Comprime en GZip un conjunto de archivos. Empaqueta en JAR un conjunto de archivos. Crea un archivo de manifiesto. Tarea slo vlida para Unix que invoca al manejador de paquetes rpm. Firma un archivo JAR o ZIP con la herramienta javasign del JDK. Empaqueta una serie de archivos en un TAR. Desempaqueta un archivo JAR. Desempaqueta un archivo TAR. Desempaqueta un archivo WAR. Descomprime un archivo ZIP. Una extensin de la tarea para facilitar la creacin de archivos WAR. Crea un archivo ZIP.

Audit/Coverage TasksTarea Descripcin

jdepend

Invoca al parser JDepend, que analiza una serie de directorios de cdigo Java y genera mtricas de calidad del diseo para cada clase Java.

- 28 -

Compile TasksTarea Descripcin

depend javac apt

jspc netrexxc rmic wljspc

Determina qu archivos de clase estn desactualizados con respecto a su cdigo fuente, eliminando los archivos de clase que dependan de cualquier clase desactualizada y forzando su recompilacin. Usada junto a . Compila los archivos de cdigo fuente Java especificados. Ejecuta el annotation processor tool (apt) y opcionalmente compila el cdigo fuente original, y cualquier cdigo generado. Ejecuta el compilador JSP. Puede usarse para precompilar pginas JSP para una rpida invocacin inicial de pginas JSP, el despliegue en un servidor sin toda la JDK instalada, o simplemente comprobacin de la sintaxis de las pginas sin desplegarlas. Luego puede usarse la tarea para compilar el cdigo Java. Compila un rbol de cdigo fuente NetRexx. Ejecuta el compilador RMI sobre los ficheros especificados. Compila pginas JSP usando el compilador JSP de Weblogic, weblogic.jspc. Para compilar con un compilador que no sea de Weblogic, usar .

Deployment TasksTarea Descripcin

Tarea para ejecutar una herramienta de despliegue en caliente para un serverdeploy servidor J2EE de un fabricante especfico.

Documentation TasksTarea Descripcin

javadoc stylebook

Genera documentacin del proyecto usando la herramienta javadoc. Ejecuta el generador de documentacin Apache Stylebook. Al contrario que con la versin de lnea de comandos de esta herramienta, todos los tres argumentos son obligatorios para ejecutar esta tarea.

EJB TasksTarea Descripcin

blgclient ddcreator iplanet-ejbc

Borland Application Server versin 4 y 5 Weblogic 4.5.1 iPlanet Application Server 6.0Elemento anidado de Descripcin

ejbjar

wlrun wlstop

borland iPlanet jboss jonas weblogic websphere Weblogic 4.5.1 a 7.0 Weblogic 4.5.1 a 7.0

Borland Application Server versin 4 y 5 iPlanet Application Server 6.0 JBoss JOnAS 2.4.x y 2.5 Weblogic 5.1 a 7.0 IBM WebSphere 4.0

- 29 -

Execution TasksTarea Descripcin

ant antcall apply dependset exec java parallel sequential sleep subant waitfor

Ejecuta Ant con un nuevo archivo de construccin, opcionalmente adems con la posibilidad de pasar propiedades con nuevos valores. Esta tarea puede usarse para construir sub-proyectos. Ejecuta un target dentro del mismo archivo de construccin, con la posibilidad de pasar propiedades con nuevos valores. Ejecuta un comando de sistema sobre un conjunto de ficheros. Compara un conjunto de archivos de cdigo fuente con un conjunto de archivos de destino. Si cualquiera de los archivos de cdigo fuente es ms nuevo que cualquiera de los de destino, todos los de destino son borrados. Ejecuta un comando. Similar a , pero sin conjuntos de ficheros. Ejecuta una clase Java en la mquina virtual Java de Ant o en otra aparte. Una tarea contenedora. Todas las tareas anidadas dentro de ella se ejecutarn en paralelo en su propio thread independiente. Una tarea contenedora. Todas las tareas anidadas dentro de ella se ejecutan en secuencia. Su principal uso es agrupar subconjuntos de tareas que han de ejecutarse secuencialmente dentro de la tarea . Suspende la ejecucin de Ant por un periodo de tiempo (dado en mseg). Esta tarea es til cuando la construccin o el despliegue requiere de un intervalo de tiempo entre tareas. Llama a cierto target para todos los subproyectos definidos. Bloquea la ejecucin hasta que se cumplan ciertas condiciones. Esta tarea est orientada a sincronizar distintos procesos en paralelo de .

File TasksTarea Descripcin

attrib checksum chgrp chmod chown concat copy delete filter fixcrlf get mkdir move patch

Cambia los permisos y/o atributos de un fichero o ficheros dentro de los directorios especificados. Actualmente, slo tiene efecto bajo Windows. Genera un checksum para un fichero o conjunto de ficheros. Cambia el grupo al que pertenece un fichero o conjunto de ficheros. Actualmente, esta tarea slo tiene efecto en sistemas UNIX. Cambia los permisos de un fichero o grupo de ficheros dentro de los directorios especificados. Los permisos se establecen siguiendo el estilo habitual de UNIX. Actualmente, slo tiene efecto en sistemas UNIX. Cambia el usuario al que pertenece un fichero o conjunto de ficheros. Actualmente, esta tarea slo tiene efecto en sistemas UNIX. Concatena mltiples ficheros en uno solo, o en el registro de salida de Ant. Copia un fichero o conjunto de ficheros a un nuevo fichero o directorio. Borra ficheros sueltos, todos los ficheros y subdirectorios de un directorio dado, o un conjunto de ficheros dado por uno o ms . Establece un filtro de tokens, o lee varios filtros de un fichero especificado. Los tokens de filtrado se usan en todas las tareas de copiado de archivos. Modifica un fichero para aadir o eliminar tabuladores, saltos de pgina, retornos de carro o marcas EOF de fin de fichero. Descarga un fichero desde una URL. Crea un directorio. Se crean los directorios padres que no existan. Mueve un fichero o conjunto de ficheros a un directorio. Aplica un parche diferencial de cdigo diff a un archivo. - 30 -

replacereplaceregexp

sync tempfile touch

Reemplaza las ocurrencias de una cadena de texto por otra en un fichero. Reemplaza una expresin regular por un patrn de sustitucin. Sincroniza dos rboles de directorios. Genera un nombre para un archivo temporal y establece una propiedad. Cambia la fecha de modificacin de un fichero, crendolo si no existe.

Java2 Extensions TasksTarea jarlib-available Descripcin

Comprueba si una extensin est presente en un fileset o en un extensionset. Si est presente, establece una propiedad. Muestra la informacin contenida en los atributos Optional Package y jarlib-display Package Specification de los archivos JAR especificados. Tarea para generar un manifiesto que declara todas las dependencias del manifiesto. Las dependencias se determinan mirando la ruta especificada y jarlib-manifest buscando a ver si hay especificaciones Extension/Optional Package en los manifiestos del los archivos JAR. Intenta localizar un JAR que satisfaga una extensin, y coloca su ruta en la jarlib-resolve propiedad especificada.

Logging TasksTarea Descripcin

record

Lanza un listener que graba la salida del proceso de construccin a un fichero. Se permiten varios recorders simultneos con distintos ficheros.

Mail TasksTarea Descripcin

mail

Enva un correo electrnico saliente usando SMTP.

Miscellaneous TasksTarea defaultexcludes Descripcin

echo fail genkey input script sound splash sql taskdef tstamp typedef xmlvalidate

Modifica la lista por defecto de patrones de exclusin de ficheros de Ant. Enva texto a la consola del sistema (System.out) o a un fichero. Fuerza salir del proceso de construccin arrojando una BuildException, y, opcionalmente, muestra un mensaje con informacin adicional. Genera una clave (key) dentro de un almacn de claves (keystore). Permite la interaccin de los usuarios durante el proceso de construccin mostrando un mensaje y leyendo una lnea de entrada desde la consola. Ejecuta un script en un lenguaje que soporte Apache BSF. Reproduce un sonido al final del proceso de construccin. El sonido ser uno u otro segn la construccin concluya con xito o con un fallo. Muestra una pantalla de presentacin momentnea (splash screen). Ejecuta una serie de sentencias SQL en una base de datos usando JDBC. Aade una nueva definicin de tarea para usarla en el proyecto actual. Establece las propiedades DSTAMP, TSTAMP y TODAY del proyecto. Aade una definicin de tipo para poder usarlo en el proyecto actual. Comprueba si ciertos ficheros XML son vlidos (o bien formados). - 31 -

.NET TasksTarea Descripcin

Compila cdigo fuente C#. Compila cdigo fuente Visual Basic .NET. Compila cdigo fuente J#. Desensambla ejecutables y libreras .NET. wsdltodotnet Genera cdigo .NET (C# o Visual Basic) desde un archivo WSDL. importtypelib Importa una librera de tipo COM a .NET.

csc vbc jsharpc ildasm

Pre-process TasksTarea Descripcin

Invoca el generador de traductores ANTLR sobre un archivo de gramtica. Genera un DTD para los archivos de construccin que contiene diversa antstructure informacin sobre todas las tareas reconocidas en ese momento por Ant. Importa otro archivo de construccin y potencialmente sobrescribe los import targets del mismo con los del archivo de construccin actual. javacc Invoca el compilador-compilador JavaCC sobre un archivo de gramtica. javah Genera cabeceras JNI a partir de una clase Java. jjdoc Invoca al generador de documentacin JJDoc para JavaCC. jjtree Invoca el preprocesador JJTree para JavaCC. macrodef Define una nueva tarea como una macro. Convierte ficheros desde su codificacin de caracteres nativa a ASCII usando Unicode. Se usa habitualmente para convertir archivos de cdigo native2ascii fuente mantenidos en una codificacin nativa de sistema operativo a ASCII como paso previo a la compilacin de dicho cdigo. Define una nueva tarea utilizando una tarea ya existente con valores por presetdef defecto preestablecidos para sus atributos o elementos anidados. Identifica claves en ficheros, delimitados por tokens especiales, y los translate traduce a valores ledos desde otros ficheros de recurso (resource bundles). typedef Aade una definicin de tipo para poder usarlo en el proyecto actual. xslt Procesa un conjunto de documentos por el transformador XSLT.

antlr

Property TasksTarea Descripcin

Establece una propiedad si cierto recurso existe en tiempo de ejecucin. Establece una propiedad al ltimo elemento de una ruta especificada. buildnumber Puede usarse para hacer un seguimiento del nmero de construccin. condition Establece una propiedad si se dan ciertas condiciones. dirname Establece una propiedad a la ruta del ltimo directorio de una ruta dada. echoproperties Lista las propiedades actuales del proyecto. loadfile Carga un fichero en una propiedad. loadproperties Carga propiedades Ant desde un archivo externo. makeurl Crea una URL o una lista de URLs a partir de uno o varios ficheros. Convierte un conjunto de rutas ficheros a una lista separada por el pathconvert separador especificado y la guarda en una determinada propiedad. property Establece una propiedad (dando nombre y valor) o varias (va fichero). propertyfile Crea o modifica archivos de propiedades. - 32 -

available basename

Establece una propiedad si un cjto de ficheros es ms reciente que otro. Encuentra una determinada clase o recurso. xmlproperty Carga valores de propiedades desde un archivo XML bien formado.whichresource

uptodate

Remote TasksTarea Descripcin

ftp rexec scp setproxy sshexec telnet

Implementa un cliente FTP bsico que puede enviar, recibir, listar y borrar ficheros y directorios en un servidor FTP remoto. Tarea para automatizar una sesin rexec remota. Copia ficheros hacia o desde un servidor remoto usando SSH. Establece las propiedades del Proxy web de Java, para que las tareas y el cdigo que estn ejecutndose en la misma mquina virtual Java puedan tener acceso externo a travs del firewall a sitios web remotos. Ejecuta un comando en un servidor remoto usando SSH. Automatiza una sesin remota de Telnet.

SCM (Source Configuration Management) TasksTarea Descripcin

cvscvschangelog

cvspass cvstagdiff cc******* ccm***** vss****** p4****** pvcs sos****** st*******

Administra paquetes/mdulos recibidos desde un repositorio CVS. Genera un informe XML de los cambios guardados en un repositorio CVS. Aade entradas a un archivo .cvspass. Aadir entradas a este fichero tiene el mismo efecto que la ejecucin de un comando cvs login. Genera un informe XML de cambios diferenciales entre dos tags o fechas. Tarea que puede realizar acciones de la herramienta ClearCase: cccheckin, cccheckout, ccuncheckout, etc Consulta el manual para ms detalles. Tarea que puede realizar acciones de la herramienta Synergy, antigua Continuus: ccmcheckin, etc Consulta el manual de Ant para ms detalles. Tarea que puede realizar acciones de la herramienta Visual SourceSafe de Microsoft: vsscheckin, etc Consulta el manual de Ant para ms detalles. Tarea que puede realizar acciones de la herramienta Perforce: p4sync, p4change, p4edit, p4submit, etc Consulta el manual para ms detalles. Permite al usuario extraer la ltima revisin del cdigo fuente de una aplicacin desde un repositorio PVCS. Consulta el manual para detalles. Tarea que puede realizar acciones de la herramienta SourceOffSite: sosget, soslabel, soscheckin, etc Consulta el manual de Ant para ms detalles. Tarea que puede realizar acciones de la herramienta StarTeam: stcheckin, stcheckuot, stlabel, y stlist. Consulta el manual de Ant para ms detalles.

Testing TasksTarea Descripcin

junit junitreport

Ejecuta las pruebas del framework JUnit de pruebas de unidad. Mezcla los archivos XML generados individualmente por la tarea y genera una salida HTML, aplicndole una hoja de estilo para crear un informe de los resultados de las pruebas visible a travs de un navegador.

- 33 -

5.2.- Tareas bsicas.Las tareas bsicas son aquellas que estn incluidas en el ncleo de Ant per se, sin necesidad de incluir libreras adicionales, y que proporcionan las capacidades ms fundamentales de la herramienta. Son el conjunto mnimo de tareas que el equipo de desarrollo de Ant ha acordado que van a necesitarse en el orden del da de nuestro trabajo. Enumeraremos mediante una tabla la lista completa de todas las tareas bsicas de Ant a modo de referencia, y despus pasaremos a explicar brevemente las ms importantes y comnmente usadas en nuestro escenario habitual de trabajo.

Listado completo de tareas bsicas (Ant versin 1.7)Tarea Descripcin

ant antcall antstructure apply apt available basename buildnumber bunzip2 bzip2 checksum chmod concat condition copy cvs cvschangelog cvsversion cvspass cvstagdiff defaultexludes delete dependset diagnostics dirname ear echo echoxml exec fail

Lanza la construccin de un subproyecto. Lanza la ejecucin de un target dentro de un mismo proyecto. Genera un DTD informativo para los ficheros de construccin de Ant. Ejecuta un comando en el sistema sobre un conjunto de ficheros. Lanza el annotation processor tool (apt), y, opcionalmente, compila el cdigo original, as como cualquier cdigo fuente generado. Establece una propiedad si existe cierto recurso en tiempo de ejecucin. Determina el nombre del fichero de una ruta absoluta o relativa. Tarea bsica para ir registrando un nmero de construccin. Descomprime un recurso comprimido con BZip2. Comprime un recurso a un archivo de salida usando el algoritmo BZip2. Genera checksums. Esta tarea puede usarse para verificar ficheros. Cambia permisos de acceso de ficheros. Slo tiene efecto en UNIX. Concatena uno o ms recursos a un nico fichero de salida o la consola. Establece una propiedad si se cumple cierta condicin. Copia archivos o coleccin de recursos a un nuevo archivo o directorio. Administra paquetes recibidos desde un repositorio CVS. Genera un fichero XML con el log de cambios grabados en un CVS. Tarea que permite obtener la versin del cliente y el servidor CVS. Aade entradas a un archivo .cvspass, con el mismo efecto que cvslogin. Genera un fichero XML con los cambios entre dos tags o fechas. Altera los archivos que son excluidos por Ant por defecto. Borra una serie de ficheros y/o directorios. Maneja dependencias adicionales arbitrarias entre ficheros. Ejecuta el modo diagnstico desde dentro de Ant. til si se quiere lanzar su modo de diagnstico desde dentro de un entorno de desarrollo (IDE). Establece una propiedad con el directorio padre de una ruta de fichero. Extensin de la tarea jar con opciones de tratamiento especiales para archivos EAR (Enterprise Application Archive). Escribe un mensaje a los logres y listeners del proyecto, que por defecto ser la salida del sistema (System.out) si no se especifica lo contrario. Tarea que pasa al dispositivo de salida o a un fichero los elementos XML que estn incluidos en su bloque. Ejecuta un comando de sistema. Similar a apply, pero sin ficheros. Provoca un fallo en el proceso de construccin, arrojando una excepcin - 34 -

filter fixcrlf genkey get gunzip gzip import input jar java javac javadoc length loadfile loadproperties loadresource makeurl mail macrodef manifestmanifestclasspath

mkdir move nice parallel patch pathconvert presetdef property record replace resourcecount rmic sequential signjar sleep sql subant sync tar taskdef tempfile

BuildException con un mensaje informativo. Establece tokens de cadenas de caracteres para filtrado de ficheros. Ajusta las convenciones locales de salto de lnea y retorno de carro. Genera una clave cifrada de firma en un almacn de claves (keystore). Descarga un fichero desde URL (podemos usar http:, ftp:, jar:, https:). Descomprime un recurso usando GZip. Comprime un recurso usando el algoritmo GZip. Importa un fichero de construccin externo completo al proyecto actual. Permite la interaccin del usuario durante el proceso de construccin. Empaqueta en JAR un conjunto dado de ficheros. Ejecuta una clase Java en la mquina virtual. Compila un rbol de cdigo fuente Java. Genera la documentacin del proyecto usando la herramienta javadoc. Muestra o establece una propiedad con la longitud de fichero o cadena. Especializacin de loadresource para ficheros. Carga los contenidos de cierto fichero como propiedades de Ant. Carga un recurso textual y lo almacena en una propiedad. Convierte rutas de fichero en URLs tipo file: Enva un correo electrnico saliente va SMTP. Define una nueva tarea usando los elementos anidados . Crea un archivo de manifiesto para poder incluirlo en un archivo JAR. Convierte un recurso path en una propiedad vlida que pueda usarse para establecer el atributo Class-Path de un manifiesto. Crea un directorio (y todos sus padres, hasta la rama final), si no existe. Mueve ficheros a un nuevo directorio. Consulta o establece la prioridad de la hebra actual de ejecucin de Ant. Tarea contenedora (puede contener otras tareas). Todas las tareas contenidas dentro de esta tarea corrern paralelamente en su thread. Aplica un parche diferencial (diff) a un archivo. Convierte una coleccin de recursos en una lista de nombres de archivo. Permite definir nuestras propias tareas en un archivo de construccin. Usando esta tarea podemos definir nuestras propias tareas. Establece una propiedad (dados su nombre y valor) o un conjunto de las mismas a travs de un fichero externo de propiedades. Define un recorder, es decir, un listener que guarda la salida generada por el proceso de construccin a un fichero. Reemplaza en un conjunto de ficheros una cadena de texto por otra. Sirve para consultar el tamao de colecciones de recursos o establecer propiedades con dicho nmero. Puede usarse como condicin. Compila clases en el rmic (Java RMI stub compiler) del JDK. Tarea contenedora. Las tareas anidadas son ejecutadas en secuencia. La funcin de esta tarea es agrupar tareas secuenciales en . Firma archivos JAR usando la herramienta jarsigner del JDK. Detiene (o duerme) Ant durante un breve periodo de tiempo. til si el proceso de construccin o despliegue requiere una pausa entre tareas. Ejecuta una serie de sentencias SQL en una base de datos usando JDBC. Llama a un target dado para todos los subproyectos definidos. Sincroniza un directorio con los ficheros definidos en una coleccin. Crea un archivo TAR para agrupar colecciones de ficheros. Aade una definicin de tarea al proyecto actual para que pueda usarse. Crea un archivo temporal que es asignado a una propiedad. - 35 -

touch tstamp typedef unjar untar unwar unzip uptodate waitfor whichresource war xmlproperty xslt zip

Cambia fecha de ltima modificacin de un fichero. Si no existe, lo crea. Establece las propiedades DSTAMP, TSTAMP y TODAY del proyecto. Aade la definicin de una tarea o tipo de datos al proyecto para que pueda ser usado en l. es una generalizacin de esta. Descomprime un archivo JAR. Desempaqueta un archivo TAR. Despliega un archivo WAR. Descomprime un archivo ZIP. Establece una propiedad si una serie de archivos de destino son ms recientes que otra serie de archivos fuente. Bloquea la ejecucin hasta que se dan una serie de condiciones. Esta tarea est enfocada a sincronizar una serie de procesos que se estn ejecutando en paralelo dentro de una tarea . Busca una clase o recurso y establece una propiedad con su URL si el recurso o fichero en cuestin es encontrado. Una extensin de la tarea para manejar las caractersticas especiales de los ficheros WAR (directorio WEB-INF, web.xml, etc). Carga valores de propiedades desde un archivo XML bien formado. Pasa un conjunto de documentos a travs de un procesador XSLT. Crea un archivo comprimido en ZIP a partir de un conjunto de ficheros.

- 36 -

Tareas bsicas ms importantes Descripcin:

Lanza la construccin de un subproyecto con su propio archivo de construccin.Atributos: Atributo Descripcin

antfile dir target inheritAll inheritRef output

Nombre del archivo a utilizar. Por defecto: build.xml. El directorio base del subproyecto. Por defecto: el basedir del proyecto. Nombre del target a ejecutar en el subproyecto. Por defecto: target defecto. Si el subproyecto hereda las propiedades del proyecto padre. Defecto: true. Si el subproyecto hereda las referencias del padre. Defecto: false. Nombre del archivo donde volcar la salida.

Elementos anidados: Elemento anidado Descripcin

property reference targetEjemplos:

Nombre de una propiedad que queremos propagar al subproyecto. Para ms informacin, consulta la sintaxis de la tarea property. Referencia identificativa de un tipo de datos que queramos propagar. Mediante elementos anidados se soporta la llamada de mltiples targets.

Lanza Ant sobre un subproyecto, unicado en el subdirectorio subproyecto: Como el ejemplo anterior, lanza Ant sobre un subproyecto, unicado en el subdirectorio subproyecto, pero se especifica un nombre de archivo de construccin subbuild.xml diferente al nombre por defecto, y, en lugar del target por defecto, invoca a compilar: Como el ejemplo anterior, pero pasando atributos al subproyecto a travs de una propiedad individual y de un fichero de propiedades externo:

- 37 -

Lanza la ejecucin de un target dentro de un mismo proyecto.Atributo Descripcin

target inheritAll inheritRefElemento anidado

Nombre del target a ejecutar en el subproyecto. Por defecto: target defecto. Si el nuevo proyecto hereda las propiedades del actual. Por defecto: true. Si el nuevo proyecto hereda las referencias del actual. Por defecto: false.Descripcin

property reference targetEjemplos:

Nombre de una propiedad que queremos propagar al target invocado. Referencia identificativa de un tipo de datos que queramos propagar. Mediante elementos anidados se soporta la llamada de mltiples targets.

En el siguiente cdigo, desde el target un-target-cualquiera se invoca a otro target imprimir-mensaje:

Ejecuta un comando en el sistema, con un conjunto de ficheros como argumento. Es una de las tareas ms potentes de entre las que proporciona Ant.Atributo Descripcin

executable dir dest

spawn relative forwardslash type

Nombre del comando a ejecutar, sin argumentos. Directorio de trabajo donde el comando debera ejecutarse. Directorio donde esperamos que el comando guarde los ficheros de salida. Atributo slo vlido si se usa un mapeador anidado. Si se omite, Ant interpretar las rutas de salida del mapeador como rutas absolutas. Si el comando debe ejecutarse en una hebra independiente de Ant. Si se lanza un comando independiente, Ant no puede hacer un log de la salida del comando, ni estarn activas las propiedades input, output, error y result del proyecto. Por defecto: false. Si los nombres de fichero que se pasan al comando son rutas relativas. Si los nombres de fichero deberan pasarse al comando usando barras /, incluso si el sistema operativo requiere otro separador, como la invertida. Indica el tipo de rutas que se pasan al comando: si slo se consideran las rutas de archivo (file), directorio (dir) o ambos (both). Defecto: file. - 38 -

addsourcefile os osfamily input inputstring output error logErroroutputproperty errorproperty resultproperty

parallel maxparallel append timeout failonerrorfailifexecutionfails

skipemptyfilesets newenvironment

vmlauncherresolveExecutable

verboseignoremissing

forceElemento anidado

Si los nombres de fichero se aaden automticamente. Defecto: true. Lista de sistemas operativos en los que el comando puede ser ejecutado. Familia del sistema operativo, tal y como se usa en la condicin . Un archivo desde el que se recoger la entrada estndar hacia el comando. Una cadena que hace de flujo de entrada al comando. Exclusivo con input. Fichero al que volcar la salida de la ejecucin del comando. Fichero al que volcar la salida de error de la ejecucin del comando. Atributo para poder ver la salida de error del comando por el log de Ant. La propiedad en la que volcar la salida del comando. Alternativa al fichero. La propiedad en la que volcar el error del comando. Alternativa al fichero. La propiedad en la que se almacenar el cdigo de retorno del comando. Ejecuta el comando una sola vez, con todos los ficheros como argumento del comando. Si est a false, se ejecuta el comando una vez por archivo. Limita la cantidad de paralelismo a un cierto nmero de ficheros en cada momento. Si se usa un valor ]]> Copyright 2007 Dummy, Inc.]]>

- 61 -

5.3.- Tareas opcionales.Las tareas opcionales son aquellas que no estn incluidas en el ncleo de Ant per se, al considerarse fuera de la funcionalidad general o del caso ms habitual de uso para el que est enfocada la herramienta. No obstante, algunas tareas consideradas como opcionales, como por ejemplo y , nos sern habitualmente muy necesarias. Para poder usar una tarea opcional habremos de consultar las libreras que necesita dicha tarea (si es que las necesita, no siempre es as), que normalmente se mencionarn, si es el caso, en la documentacin oficial. Si la tarea opcional que queremos utilizar necesita de libreras adicionales, hemos de asegurarnos de que estn en un directorio donde Ant pueda encontrarlas, o de que siempre se incluyan en el classpath de nuestro proyecto. Para conocer estas dependencias, el manual de Ant tiene un apartado Library dependencies. Las tareas opcionales son un sper conjunto de tareas, por encima de las bsicas, que la comunidad de desarrollo entorno a la herramienta ha ido creando con el paso del tiempo para acometer y facilitar todo tipo de procesos relacionados con la construccin y el desarrollo de aplicaciones de diversas tecnologas sobre la plataforma Java usando Ant. A continuacin, se incluye un listado completo de las tareas opcionales que proporciona Ant. En este listado no se entra en ningn detalle sobre sus atributos o elementos anidados, ya que excedera el carcter docente a un nivel de completa introduccin de este documento. El lector s podr usar este listado para localizar rpida y fcilmente la tarea Ant que cubre las necesidades de funcionalidad que est buscando. Tras el listado de tareas opcionales, se incluye, como se hizo en el caso de las tareas opcionales, varias pginas dedicadas a las tareas ms importantes y comnmente usadas en los escenarios de desarrollo ms habituales. En este caso, se han considerado de inters trascendental las tareas y , que, como se ha comentado ya, son totalmente necesarias en la construccin de proyectos bien diseados.

- 62 -

Listado de tareas opcionales (Ant versin 1.7)TareaTarea

DescripcinDescripcin

.NET Tasks

antlr cab chgrp chown cc******* ccm***** depend

Compila cdigo fuente C#. Compila cdigo fuente Visual Basic .NET. Compila cdigo fuente J#. Desensambla ejecutables y libreras .NET. wsdltodotnet Genera cdigo .NET (C# o Visual Basic) desde un WSDL. importtypelib Importa una librera de tipo COM a .NET. Invoca el generador de traductores ANTLR sobre un archivo de gramtica. Crea un archivo CAB de Microsoft. Cambia el grupo al que pertenece un fichero o conjunto de ficheros. Actualmente, esta tarea slo tiene efecto en sistemas UNIX. Cambia los permisos de un fichero o grupo de ficheros dentro de los directorios especificados. Los permisos se establecen siguiendo el estilo habitual de UNIX. Actualmente, slo tiene efecto en sistemas UNIX. Tarea que puede realizar acciones de la herramienta ClearCase: cccheckin, cccheckout, ccuncheckout, etc Consulta el manual para ms detalles. Tarea que puede realizar acciones de la herramienta Synergy, antigua Continuus: ccmcheckin, etc Consulta el manual de Ant para ms detalles. Determina qu archivos de clase estn desactualizados con respecto a su cdigo fuente, eliminando los archivos de clase que dependan de cualquier clase desactualizada y forzando su recompilacin. Usada junto a .Tarea Descripcin

csc vbc jsharpc ildasm

blgclient ddcreator iplanet-ejbc EJB Tasks

Borland Application Server versin 4 y 5 Weblogic 4.5.1 iPlanet Application Server 6.0Elemento anidado Descripcin

ejbjar

borland iPlanet jboss jonas weblogic websphere

Borland Application Server versin 4 y 5 iPlanet Application Server 6.0 JBoss JOnAS 2.4.x y 2.5 Weblogic 5.1 a 7.0 IBM WebSphere 4.0

wlrun Weblogic 4.5.1 a 7.0 wlstop Weblogic 4.5.1 a 7.0 echoproperties Lista las propiedades actuales del proyecto. Implementa un cliente FTP bsico que puede enviar, recibir, listar y borrar ftp ficheros y directorios en un servidor FTP remoto. image Aplica transformaciones de imagen (rotar, etc) a un conjunto de ficheros. Comprueba si una extensin est presente en un fileset o en un jarlib-available extensionset. Si est presente, establece una propiedad dada. Muestra la informacin contenida en los atributos Optional Package y jarlib-display Package Specification de los archivos JAR especificados. Tarea para generar un manifiesto que declara todas sus dependencias. Las jarlib-manifest dependencias se determinan viendo si hay especificaciones Extension o Optional Package en los manifiestos del los archivos JAR de la ruta dada. jarlib-resolve Busca un JAR que satisfaga una extensin, y coloca su ruta en la propiedad. javacc Compila los archivos de cdigo fuente Java especificados. javah Genera cabeceras JNI a partir de una clase Java. Ejecuta el compilador JSP. Puede usarse para precompilar pginas JSP. jspc Luego puede usarse la tarea para compilar el cdigo Java. - 63 -

Invoca al parser JDepend, que analiza una serie de directorios de cdigo Java y genera mtricas de calidad del diseo para cada clase Java. jjdoc Invoca al generador de documentacin JJDoc para JavaCC. jjtree Invoca el preprocesador JJTree para JavaCC. junit Ejecuta las pruebas del framework JUnit de pruebas de unidad. Mezcla los archivos XML generados individualmente por la tarea junitreport y genera una salida HTML, aplicndole una hoja de estilo para crear un informe de los resultados de las pruebas visible a travs de un navegador. Convierte ficheros desde su codificacin de caracteres nativa a ASCII usando Unicode. Se usa habitualmente para convertir archivos de cdigo native2ascii fuente mantenidos en una codificacin nativa de sistema operativo a ASCII como paso previo a la compilacin de dicho cdigo. netrexxc Compila un rbol de cdigo fuente NetRexx. Tarea que puede realizar acciones de la herramienta Perforce: p4sync, p4****** p4change, p4edit, p4submit, etc Consulta el manual para ms detalles. propertyfile Crea o modifica archivos de propiedades. Permite al usuario extraer la ltima revisin del cdigo fuente de una pvcs aplicacin desde un repositorio PVCS. Consulta el manual para detalles. replaceregexp Reemplaza una expresin regular por un patrn de sustitucin. rexec Tarea para automatizar una sesin rexec remota. Tarea slo vlida para Unix que invoca al manejador de paquetes rpm. rpm schemavalidate Esta tarea valida archivos XML descritos por un XML Schema. scp Copia ficheros hacia o desde un servidor remoto usando SSH. script Ejecuta un script en un lenguaje que soporte Apache BSF. scriptdef Define una tarea Ant usando un lenguaje script que soporte Apache BSF. Tarea para ejecutar una herramienta de despliegue en caliente para un serverdeploy servidor J2EE de un fabricante especfico. Establece las propiedades del Proxy web de Java, para que las tareas y el setproxy cdigo que estn ejecutndose en la misma mquina virtual Java puedan tener acceso externo a travs del firewall a sitios web remotos. Reproduce un sonido al final del proceso de construccin. El sonido ser sound uno u otro segn la construccin concluya con xito o con un fallo. Tarea que puede realizar acciones de la herramienta SourceOffSite: sosget, sos****** soslabel, soscheckin, etc Consulta el manual de Ant para ms detalles. splash Muestra una pantalla de presentacin momentnea (splash screen). sshexec Ejecuta un comando en un servidor remoto usando SSH. Tarea que puede realizar acciones de la herramienta StarTeam: stcheckin, st******* stcheckuot, stlabel, y stlist. Consulta el manual de Ant para ms detalles. symlink Tarea para administrar los enlaces simblicos en entornos UNIX. telnet Automatiza una sesin remota de Telnet. Identifica claves en ficheros, delimitados por tokens especiales, y los traduce translate a valores ledos desde otros ficheros de recurso (resource bundles). Tarea que puede realizar acciones de la herramienta Visual SourceSafe de vss****** Microsoft: vsscheckin, etc Consulta el manual de Ant para ms detalles. Compila pginas JSP usando el compilador JSP de Weblogic, weblogic.jspc. wljspc Para compilar con un compilador que no sea de Weblogic, usar . xmlvalidate Comprueba si ciertos ficheros XML son vlidos (o bien formados). jdepend

- 64 -

Tareas opcionales ms importantes Descripcin:

Ejecuta las pruebas del framework JUnit. Esta tarea requiere de una biblioteca externa: junit.jar localizable en el classpath de Ant o del proyecto en construccin.Atributos: Atributo printsummary Descripcin

Imprime estadsticas para cada caso de prueba. Puede tomar los valores on, off y withOutAndErr. Por defecto: off. fork Ejecuta los tests en una mquina virtual separada. Controla cuantas instancias de la mquina virtual se crean para los tests. Posibles valores: una por cada prueba (perTest), una por lote (perBatch), y una en total (once). Slo las pruebas que tienen las mismas opciones de forkmode filtertrace, haltonerror, haltonfailure, errorproperty y failureproperty pueden compartit una MV. Por defecto: perTest. Detiene el proceso de construccin si un ocurre algn error. Defecto: off. haltonerror errorproperty El nombre de una propiedad que establecer en el evento de un error. Detiene el proceso de construccin si ocurre algn fallo. Los errores haltonfailure tambin se consideran fallos a este efecto. Por defecto: off. failureproperty El nombre de una propiedad a establecer si hay algn fallo en las pruebas. filtertrace Elimina todas las trazas de la pila de Junit y Ant de las trazas de error. Cancela una prueba individual si no termina antes de un cierto tiempo, timeout dado en milisegundos. Se ignora si fork est desactivado. Cantidad mxima de memoria a reservar para la mquina virtual maxmemory independiente. Se ignora si fork est desactivado. El comando usado para invocar a la mquina virtual Java. Por defecto, es jvm java. El nombre y la ruta del comando se resuelve a travs de java.lang.Runtime.exec(). Se ignora si fork est desactivado. dir El directorio en el que invocar la MV. Ignorado si fork est desactivado. No propagar el anterior entorno si se especifican nuevas variables de newenvironment entorno. Ignorado si fork est desactivado. Aadir implcitamente las clases de Ant y la librera JUnit requeridas para includeantruntime ejecutar las pruebas al classpath en modo independiente (usando fork). Enva la salida generada por las pruebas al registro de Ant, as como a los showoutput formatters de salida. Por defecto, slo los formatters reciben la salida. Enva cualquier salida generada por las pruebas a los formatters de las outputformatters pruebas. Por defecto: true. tempdir Directorio donde Ant debera colocar los archivos temporales. Si debera instanciarse un nuevo cargador de clases para cada caso de reloading prueba. Se ignora si fork est desactivado. Por defecto: true. Clona todo el entorno de la mquina virtual de Ant en las MV clonevm independientes. Se ignora si fork est desactivado. Por defecto: false.

- 65 -

Elementos anidados: Elemento anidado Descripcin

classpath test batchtest jvmarg syspropertysyspropertyset

envbootclasspath

permissions assertions formatterEjemplos: