Elementos y Selectores de Tareas de Ant
Ya hemos hablado en post anteriores tanto de los Bloques como de las Tareas de Ant. Sin embargo, aún nos quedaría tratar un tercer nivel de ejecución de la herramienta Ant. Nos estamos refiriendo a las estructuras denominadas Elementos. Tal y como ya vimos en su momento, la configuración de Ant está dividida en una serie de Bloques de ejecución, cada uno de los cuales podrá estar compuesto por una serie de Tareas de ejecución (denominadas Task). Esta atomización es la que permite la famosa flexibilidad del plugin de Ant.
Pues bien, yendo un poco más allá, hay que especificar que, dentro de cada Tarea, nos vamos a encontrar una serie de tags denominados Elementos. Cada uno de estos elementos nos servirá para ir definiendo y especificando la funcionalidad que deberá ser realizada dentro de una Task determinada. Dicho de otro modo, podemos visualizar los elementos como una serie de parametrizaciones que deben ser establecidas de una forma u otra para que la Task ejecute con precisión el proceso requerido por nuestra aplicación.
Elementos de ejecución de Tareas de Ant
Teniendo en cuenta lo anterior, a nadie le sorprenderá si digo que dentro de cada una de las task de Ant podemos ir definiendo una serie de
elementos que nos permitirán ejecutar la tarea tal y como queremos que se haga. Obviamente, podremos encontrarnos más de un elemento dentro de la misma tarea.
👉 Por ejemplo, en la siguiente tarea podemos observar un elemento denominado <fileset>
Patrones de Ant
Antes de continuar, me gustaría detallar un tipo especial de elemento. Me refiero a la definición de patrones que nos vamos a encontrar continuamente en las tareas de Ant.
Los patrones de Ant son la forma en que podemos indicarle al plugin si queremos que una tarea trate al mismo tiempo varios objetos que tengan parte de su denominación en común.
Los patrones más comunes son los siguientes:
* Para incluir todos los subdirectorios recursivamente, se usará el patrón
* Para incluir el comodín de una cadena completa se incluirá el patrón
* Para incluir el comodín de un único caracter se incluirá el patrón
Para especificar un determinado patrón en una task, tendremos que usar el elemento “patternset”.
<patternset>
Esto se podrá hacer de dos modos.
* Modo 1
* Modo 2
Elementos básicos de Tareas de Ant
A continuación, voy a presentar la lista de los elementos más comunes que nos vamos a encontrar en Ant (según mi experiencia, claro está).
* Fileset: Para indicar que se va a trabajar con un determinado fichero. Se utiliza la etiqueta
<fileset>
👉 Ejemplo:
* Filelist: Para incluir una lista de ficheros. Se utiliza el tag:
<filelist>
👉 Ejemplo:
* Mapper: Permite establecer un mapeo para la acción a realizar. Se utiliza la etiqueta
<mapper>
👉 Ejemplo: filtrar determinados ficheros en una task de copia
👉 Ejemplo: crear fichero XML destino
* Classfileset: Permite definir una referencia a un fichero. Este comando necesita que Ant tenga acceso a la librería BCEL. Se utiliza la etiqueta
<classfileset>
👉 Ejemplo:
* Path: Sirve para definir una ruta de acceso a determinados directorios y ficheros. Se utiliza la etiqueta
<path>
👉 Ejemplo:
Posteriormente, en cualquier task podremos acceder a la ruta anterior usando el identificador de la ruta.
* Filter Readers: Sirven para eliminar comentarios de determinados ficheros. Dentro de esta tipología podemos encontrar los siguientes tags:
<stripjavacomments>
<striplinecomments>
<striplinebreaks>
👉 Ejemplo: Eliminar comentarios de los ficheros java dentro de una determinada task
👉 Ejemplo: Eliminar comentarios que empiecen por la cadena “--”
👉 Ejemplo: Eliminar saltos de línea
Selectores básicos de Tareas de Ant
Los selectores son una tipología especial de elementos que nos permiten seleccionar objetos en función de diferentes características de los mismos. Al igual que el resto de los elementos de Ant, los selectores deben ser incluidos dentro de una task concreta.
La lista de selectores más comunes sería la siguiente:
* Date: Selección por fecha.
<date>
👉 Ejemplo:
* Present: selección en función de la existencia (“presencia”) de los ficheros en el directorio origen o en el directorio destino.
<present>
👉 Ejemplo:
* Size: selección por tamaño.
<size>
👉 Ejemplo: seleccionar ficheros menores de 1 Kbyte
* Contains: selección de ficheros que contengan un determinado patrón de texto.
<contains>
👉 Ejemplo
* Containsregexp: selección de ficheros que contienen un determinado patrón de tipo Regexp (esto es, patrones definidos mediante “regular expression”).
<containsregexp>
👉 Ejemplo:
* Type: Selección en función del tipo de fichero.
<type>
👉 Ejemplo:
* Selectores lógicos: Están definidos por los siguientes tags:
<and>
<or>
<not>
<none>
👉 Ejemplo: Selector lógico AND para añadir una condición adicional dentro de una task
Alerts y Loggers de Ant
Junto a los elementos y selectores mencionados, en Ant adicionalmente podremos utilizar una serie de Alerts y Loggers que nos permitirán ir recogiendo información asociada a la ejecución de las diferentes tareas del XML.
Aunque no vamos a entrar en detalle sobre este tema, sí que mencionaré que los tipos principales de Loggers con los que podemos trabajar son los siguientes.
- DefaultLogger
- NoBannerLogger
- TimestampedLogger
- BigProjectLogger
- SimpleBigProjectLogger
- ProfileLogger
- AnsiColorLogger
- MailLogger
- Log4JListener
En líneas generales, con todos los apartados mencionados en este post ya nos debería bastar para tener una visión global básica de cuáles son las tipologías de elementos y selectores que vamos a necesitar para realizar la construcción de nuestra aplicación mediante Ant. De hecho, salvo que tu proyecto sea de alta complejidad, lo más probable es que no necesites buscar elementos adicionales a los mencionados en este artículo. Dicho de otro modo, con estos elementos deberíamos tener suficiente para elaborar el .xml requerido para aplicaciones de complejidad media/baja.
Pues nada, eso es todo lo que quería comentarte en relación con los elementos y selectores que nos podemos encontrar en las Task de Ant. A partir de aquí, no deberías tener problema en profundizar en la herramienta si en algún momento tu proyecto lo requiere. En cualquier caso, puedes dejarme aquí abajo cualquier pregunta que te surja al respecto.
Saludos.
Comentarios
Publicar un comentario