Tareas de ejecución Task de Ant

Continuando con la serie de posts relacionados con Ant, hoy vamos a centrarnos en los tipos de tareas que se pueden realizar con dicha herramienta. Ya hemos visto que, para un proyecto concreto, Ant puede dividir el trabajo en una serie de Bloques de ejecución. Esto nos permite estructurar el ciclo de vida de nuestro software, estableciendo bloques de preparación, de compilación, de construcción, etc... Al final, tras todos los procesos, la idea es que Ant nos acabe proporcionando el EAR de nuestro proyecto que va a poder ser desplegado en producción.

 

 

Pues bien, aparte de lo comentado, Ant tiene predefinidas una serie de tareas (denominadas “Task”) que pueden ser ejecutadas dentro de los bloques que se vayan estableciendo dentro del XML. Esto nos permitirá refinar la funcionalidad a realizar por cada Bloque, indicando de forma atomizada cada una de las tareas que deseamos que sean ejecutadas dentro del mismo. Como os podéis imaginar, estas tareas Ant permiten una gran flexibilidad a la hora de configurar la compilación y la construcción del proyecto de una forma u otra.


Tareas de ejecución Task de Ant


Dicho lo anterior, a continuación voy a hacer un resumen de las que, en mi opinión, son las principales Task con las que vamos a trabajar en los bloques de un proyecto. Una vez más os digo que no se trata de una lista exhaustiva sino, más bien, un resumen de las más importantes. 

 

Obviamente, todas las tags de las tareas que vamos a ver deberán ser incluidas dentro de la tag <target> de un bloque determinado. 

 

👉 Ejemplo de tarea para reemplazar el contenido de un fichero (dentro del bloque de compilación):


<target name="compile" description="Compiles the code" depends="prepare">
    ...
    <replace file="etc/file.txt" token="origin" value="This is so cool" />
    ...
</target>

 

Tareas básicas de ejecución Task

 

Teniendo en cuenta esto, las tareas más comunes serían las siguientes:


* Crear directorio: Se utiliza la etiqueta

<mkdir>


👉 Ejemplo:


    <mkdir dir="dir" />


* Copiar fichero: Se utiliza la etiqueta

<copy>


👉 Ejemplo:


    <copy file="etc/file" tofile="backup/file" />


* Mover fichero: Se utiliza la etiqueta

<move>


👉 Ejemplo:


    <move file="etc/file" tofile="backup/file" />


* Sincronizar ficheros: Esta task hace que el directorio indicado en “todir” replique la misma información que la contenida en el fichero indicado en “dir”. Se utiliza la etiqueta:

<sync>


👉 Ejemplo:

 
    <sync todir="backup">
      <fileset dir="etc" />
    </sync> 
 

 

Obtener información de una url: Se utiliza la etiqueta

 <get>

 

👉 Ejemplo:

 
    <get src="http://ant.apache.org/" dest="etc/index.html" />
 

 

Reemplazar el contenido de un fichero: En el tag "token" se indica la cadena buscada y en el tag "value" se especificará la cadena de sustitución. Se utiliza la etiqueta.

<replace>


👉 Ejemplo:


    <replace file="etc/file.txt" token="origin" value="This is so cool" />

 

* Añadir contenido a un fichero. Con el tag "append" activado se concatenará la cadena indicada al final del fichero. Se utiliza la etiqueta:

 <concat>

 

👉 Ejemplo:


  <concat destfile="etc/file.txt" append="yes"> Hello, World </concat>
 

 

Tareas de ejecución adicionales

 

Junto a las anteriores, también considero de interés las siguientes tareas:

 

* Ejecutar test de junit: En fileset tenemos que indicar las clases con los test de junit. Se utiliza la etiqueta.

<junit>

 

👉 Ejemplo:

 
   <junit printsummary="yes" haltonfailure="yes" showoutput="yes" >
        <classpath refif="junit.classs.path" />
       
        <batchtest fork="yes" todir=${reports.dir} >
            <formatter type="xml" />
            <fileset dir="${src.dir}">          
                <include name="*.Test*.java"/>
            </fileset>
        </batchtest>
    </junit>
 

 

* Enviar email. Se utiliza la etiqueta:

<mail>

 

👉 Ejemplo:

 
    <mail mailhost="smtp.mail.yahoo.com" ... />

 

Realizar desplieques remotos. Se utiliza la etiqueta

<copy>

 

👉 Ejemplo:

 
    <copy file="${docs.dir}/test.html" todir="${deploy.dir}" />
 

 

* Realizar ftp. Se utiliza la etiqueta

<ftp>

 

👉 Ejemplo:

 
    <ftp server="${server.name}" remotedir=... userid=... password=...  />
 

 

* Realizar ftp get. Se utiliza la etiqueta

<ftp>

 

👉 Ejemplo:

 
    <ftp action="get" server="ftp.apache.org" userid=.... password=... />
 

 

* Validar estructura de un XML. Se utiliza la etiqueta

<xmlvalidate>

 

👉 Ejemplo:

 
    <xmlvalidate>
        <fileset .... />
        <attribute name="...." value="false" />
        <attribute name="..." value="false" />
    </xmlvalidate>
 

 

Transformar un XML: Se realiza mediante un fichero .xslt donde se indican las transformaciones a realizar. Se utiliza la etiqueta.

<xslt>

 

👉 Ejemplo:

 
    <xslt in="input.xml" out="output.xml" style="transform.xslt" >
 

 

En líneas generales, con las tareas anteriormente menciondaas, ya tendríamos las herramientas básicas para construir el objeto build.xml de cualquier proyecto de complejidad media. Como ocurre con casi todas las tecnologías informáticas, la complejidad puede ir aumentando hasta casi el infinito y siempre nos encontraremos con obstáculos difíciles de superar. Pero la realidad es que en el 90% de los proyectos que están en marcha actualmente nos bastará con combinar las tareas anteriores para salir adelante. 


Pues nada, eso es todo lo que quería comentaros en relación con las tareas de ejecución de Ant. Espero que lista de Tasks presentadas en el post os sea útil a la hora de afrontar vuestros proyectos. En cualquier caso, ya sabéis que a continuación podéis dejarme aquí las preguntas que os vayan surgiendo al respecto.

Saludos.


Comentarios

Entradas populares de este blog

Configurar Apache Tomcat en Eclipse

Creación de Webservice SOAP básico

Componentes y Ventanas de Java Swing