Este tutorial tiene como objetivo explicar cómo crear una tarea nueva Ant y utilizarla en un script.Ov
Cómo Crear una Tarea Ant
Introducción
Seguramente todos hemos usado scripts de Ant para compilar,
empaquetar, etc nuestros proyectos. Quizás también
hemos incursionado en su utilización para la ejecución
de tareas de mantenimiento. También podríamos haberlo
utilizado para instalar software o actualizaciones. Pero en todos los
casos hemos visto el potencial de una herramienta que cuenta con
virtudes como ser multiplataforma, madura y con un extensísimo
soporte.
¿Pero no está obsoleto? ¿No está
reemplazado por Maven? No, decididamente no. Quizás uno de sus
usos habituales, la construcción de software (make) si lo
esté, pero de ninguna forma Maven es competente en el terreno
de los scripts. Está totalmente especializado en el ciclo de
construcción de software.
¿y tan potente es Ant? Si, en su terreno si, y lo que no
tenga se añade como veremos a continuación.
El objetivo de este tutorial es explicar cómo crear una
tarea nueva Ant y utilizarla en un script. Dicho desarrollo consta de
los siguientes pasos:
-
Creación de la tarea
-
Configuración
-
Utilización
Obviamente, necesitaremos tener instalado el Ant y un entorno de
desarrollo (en el tutorial se utilizará Ant 1,7 y Eclipse
3,2).
Creación de la tarea
Comenzamos creando un proyecto Java:
Creamos una carpeta “src” donde colocaremos los
fuentes.
En la solapa de Libraries, pinchamos en “Add externals JARs”
y seleccionamos todos los JARs de la carpeta “lib” del
Ant.
Le damos a “Finish” y creamos una nueva clase:
Completando los siguientes datos:
Una vez creada la clase, la completamos como se muestra a
continuación:
package
import import
public private
public this.mensaje }
public log(mensaje); } } |
Listo! Ya tenemos una tarea muy simple: muestra un mensaje. Pero
bueno, nos damos cuenta que el resto de la complejidad se la añadimos
dentro del execute() y que los parámetros que necesite se
añaden como sets.
Ahora vamos a empaquetarlo en un JAR:
Le damos a Finish y entonces vemos el nuevo JAR:
Ahora pasamos a la configuración de la tarea para su
posterior utilización.
Configuración
Antes de configurar una tarea debemos comprender su ciclo de vida:
Cada tarea indicada en un fichero build sigue el siguiente ciclo
de vida:
-
La tarea es instanciada invocando el constructor sin
argumentos, cuando Ant parsea el fichero build.xml. Todas las tareas
indicadas con taskdef son instanciadas, incluso si posteriormente no
llegan a ser utilizadas. -
La tarea obtiene referencias al proyecto al que pertenece y a
su localización (posición dentro del fichero build)
mediante los atributos project y location heredados de la clase
Task. -
Si el usuario indicó un atributo id en la
instanciación de la tarea (en el fichero build), en el objeto
proyecto se guarda (durante su interpretacion) una referencia a esta
tarea, mediante su método addReference(String, Object). Es
posible obtener estas referencias mediante el método
getReferences del objeto Project. -
La tarea obtiene una referencia al objetivo al que pertenece
mediante el atributo target heredado de la clase Task. -
El método init es invocado en tiempo de parseo.
-
En tiempo de parseo, todos los elementos hijos de la tarea
(en el fichero build, los elementos XML anidados) son creados
mediante los métodos createNombreHijo o instanciados y
añadidos a esta tarea mediante los métodos
addNombreHijo. -
En tiempo de ejecución,
-
los métodos setNombreHijo son ejecutados para dar
valor a los atributos de la tarea. -
el método addText es ejecutado, para recuperar el
texto contenido en el interior del elemento XML que representa a la
tarea. -
los atributos de los elementos hijos son establecidos
mediante sus correspondientes métodos setNombreAtributo. -
El método execute es ejecutado al menos una vez.
-
Para configurar una tarea, utilizaremos la etiqueta TaskDef dentro
del build.xml como se muestra a continuación (en el siguiente
apartado se mostrará un build.xml completo).
<project <taskdef … </project |
Utilización
Para hacer un ejemplo de la utilización, comenzaremos por
crear un fichero build.xml:
Y le añadimos:
<?xml <project
<taskdef
<target <NuevaTarea </target>
</project> |
Ahora vamos a configurar su ejecución:
Pinchamos en “Add JARs”
Y
entonces vemos que se ha añadido:
Ahora le damos a “Apply” y a “Run”.
Veremos en la consola:
Consideraciones
Recordemos que Ant es un lenguaje de scripting y que las tareas
son su unidad mínima de ejecución, con lo cual
deberíamos diseñarlas para que sean reutilizables en
otros contextos.
Crear una nueva tarea es algo trivial pero tratándose de
una herramienta tan madura y con una comunidad tan grande es
imprescindible buscar primero si lo que queremos hacer no está
ya implementado. Si no lo está, podría ser nuestra
oportunidad de hacer una contribución open source.
¿Dónde encuentro más info?
Writing Your Own Task http://ant.apache.org/manual/develop.html
Writing Ant Tasks
http://www.onjava.com/pub/a/onjava/2004/06/02/anttask.html
Conclusiones
Hemos visto que la creación de una nueva tarea es un
proceso sencillo. El diseño genérico y la documentación
es clave para su reutilización en otros contextos. Nuestra
tarea puede reutilizar otras ya existentes en el core o en otros
proyectos, en particular los filesets.
En este tutorial hemos dado sólo los primeros pasos para
poder desarrollar nuestras propias tareas de Ant, que sabrás
ampliar y personalizar para adaptarlos a tus necesidades. Quedan
muchos temas relativos a tareas con elementos anidados, tipos
enumerados, tareas con body, integración con editores, etc.
En Autentia tenemos mucha experiencia en automatización de
tareas del proceso de desarrollo software, generación de
código, etc. No dudes en ponerte en contacto con nosotros.