Está en la página 1de 24

$QW ,QWHJUDFLQFRQ,'((FOLSVH

Ant, la popular herramienta de construccin de proyectos desarrollada por la Apache Software Foundation, esta nativamente integrada en el IDE Eclipse como plug-in. Esto nos puede permitir un cmodo desarrollo ya que podemos aadirle a nuestros proyectos scripts programados para Ant y hacer que funcionen como un constructor de proyecto realizando tareas como el empaquetamiento de archivos compilados en tarros (.jar), generar la documentacin de cdigo fuente, actualizacin de otros proyectos que necesitan estar en sincrona, etc. Podemos ordenar la ejecucin de estos scripts manualmente o en forma automtica junto a eventos del IDE, en si lo importante es decir que podemos usar Ant desde el interior del propio IDE. En este tutorial para observar como funciona la integracin de Ant con Eclipse, crearemos un simple proyecto en el IDE y luego un simple script de Ant que ser capaz de ordenar la compilacin y el empaquetamiento de los archivos compilados en un tarro .jar. Veremos como ejecutar manualmente dicho script, tambin como configurar el script junto al proyecto para que se ejecute automticamente en ciertos eventos, y como exportar nuestro proyecto con Ant para obtener un script generado automticamente por el IDE. Requisitos: y y y
Tener instalado el JDK (Java Development Kit): son las herramientas de desarrollo junto al entorno de ejecucin. Hasta la fecha actual 2/05/2011 el ltimo JDK disponible es el JSE 6.0 Update 25. Tener instalado el IDE Eclipse. Yo estoy usando en este momento Eclipse Helios(Service Release 1) en mi PC. Conocimientos bsicos de Java, Eclipse y Ant.

Creacin de un proyecto
Antes que nada, crearemos un proyecto de nombre: ProyectoAnt. En el proyecto crearemos un paquete de nombre: com.ejemplo, y dentro de este crearemos una clase de nombre: MiClase con un mtodo main. Hasta ahora el IDE se vera algo as:

En el mtodo main de la clase agregamos alguna operacin simple, por ejemplo: 1 ... 2 System.out.println("Probando Ant y Eclipse!"); 3 ...

Puede ser cualquier cosa, es solo para que la clase haga algo al ejecutarse. Ejecutamos el proyecto, lo que nos recordara guardar antes de ejecutar, y se vera en la consola del IDE el resultado.

A continuacin veremos la flexibilidad que nos proporciona el IDE para trabajar con Ant.

Creacin de un constructor Ant


Para crear un constructor Ant, tenemos que crear un script XML (de extensin .xml) al cual tpicamente y convenientemente se le nombra como build.xml. Aunque podemos ponerle otro nombre, es de buena practica usar este, adems de que el IDE Eclipse tiene un editor Ant interno que por defecto esta asociado nicamente con archivos que se llamen build.xml. Se puede crear otra asociacin de archivos tambin, pero por el momento para que reconozca nuestro archivo .xml como script de Ant le llamaremos build.xml.

Los pasos a seguir: 1- En Project Explorer seleccionamos nuestro proyecto, hacemos click derecho y en las opciones seleccionamos New -> File.

2- En la nueva ventana que veremos, donde dice File Name: introducimos el nombre del archivo que ser build.xml y terminamos en Finish.

3- Ahora veremos que se ah creado un archivo build.xml el cual esta vacio y podemos editarlo desde el propio IDE, le agregamos el cdigo XML que se ve a continuacin y guardamos los cambios. 01 <?xml version="1.0" encoding="UTF-8"?> 02 <project name="ProyectoAnt" default="main">

03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 </project> <target name="empaqueta" depends="init" description="Empaqueta"> <jar jarfile="${name} v${version}.jar" basedir="bin" index="no" compress="yes"> <manifest> <attribute name="Built-By" value="${user.name}" /> <attribute name="Specification-Title" value="${name}" /> <attribute name="Specification-Version" value="${version}" /> <attribute name="Main-Class" value="com.ejemplo.MiClase" /> </manifest> </jar> </target> <target name="compila" description="Compila"> <javac srcdir="src/com/ejemplo" destdir="bin/com/ejemplo" /> </target> <target name="main" depends="init, compila, empaqueta" description="Compila y empaqueta"> <echo message="Compilando y creando el archivo .jar" /> </target> <target name="init"> <tstamp /> <property name="name" value="Prueba de Ant" /> <property name="version" value="1.0.0" /> </target>

En la pestaa Package Explorer vemos listado nuestro archivo build.xml, podemos acceder a el y modificarlo cuando queramos, incluso el editor Ant del IDE ofrece coloreo, correccin, asistente de cdigo, etc. para la sintaxis de XML, por lo que no necesitamos un editor externo. Nota: Como sabemos no todo archivo .xml es necesariamente un script de Ant, de todas formas no ocurriria nada malo si se ejecutara accidentalmente con Ant un archivo .xml ajeno. En la pestaa Outline podemos ver la estructura de nuestro XML, sus targets (objetivos) y properties (propiedades).

El archivo build.xml que hemos creado es muy simple, tiene cuatro targets que pueden invocarse: init: lo nico que hace es definir algunas propiedades que pueden ser usadas por otros targets. main: este es el target principal y predeterminado, seria una construccin completa, se compila y luego empaqueta. compila: se compilan las clases que se encuentran en el directoriosrc/com/ejemplo y se guardan en el directorio bin/com/ejemplo. empaqueta: se empaqueta en un archivo .jar todo el contenido del directorio bin.Se especifica un archivo de manifiesto con algunas propiedades, la mas importante es Main-Class ya que esta permite al .jar ser autoejecutable. Nota: en Windows la ejecucin con doble-click del archivo .jar generado no funcionara porque la asociacin de archivos .jar como ejecutables se realiza tpicamente con javaw.exe el cual es el lanzador de aplicaciones grficas, entonces se oculta la consola del sistema que seria la salida estndar. Para probar el archivo.jar desde afuera del IDE, usar java -jar desde la lnea de comandos.

Configurar Ant

La configuracin con respecto a Ant y su editor se puede encontrar en las preferencias del IDE. Si estamos interesados en modificar algo tenemos que ir al men Window -> Preferences y en la ventana de preferencias nos dirigimos a la seccin Ant.

Lo que tenemos aqu es la configuracin general de Ant, y en las sub-secciones podremos configurar aspectos del editor Ant como el asistente de cdigo, plantillas, etc. Si queremos que el editor Ant reconozca otros nombres o cualquier archivo de extensin .xml como scripts de Ant necesitamos otra asociacin de archivos para el editor. Esto se configura en esta misma ventana de preferencias pero en la seccin General -> Editors -> File Associations.

Por ejemplo si quisiramos que todo archivo de extensin .xml sea reconocido, en el primer cuadro de File Types: utilizamos Add y agregamos a la lista un nuevo tipo de archivo llamado *.xml, entonces debajo en el cuadro de Associated Editors: aparecern varias opciones de las que seleccionamos Ant Editor y finalmente asociamos con Add.

Ejecucin manual del constructor Ant (build.xml)


En principio para ejecutar rpidamente el build.xml, lo seleccionamos con click derecho en la pestaa Package Explorer y vamos a Run as -> 1 Ant Build.

De esta forma estaremos ejecutando bajo configuracin predeterminada, por lo que el target main del script ah sido invocado y se han compilado y empaquetado las clases en un .jar llamado Prueba de Ant v1.0.0.jar en el directorio raz de nuestro proyecto, incluso en el Package Explorer si actualizamos apretando F5 aparecer en la lista. En la consola del IDE se vera la salida de algunos datos.

Configurar la ejecucin
Tambin podemos configurar como ser la ejecucin del build.xml antes de ejecutarlo. Para esto tenemos que seguir los mismos pasos anteriores, solo que esta ves seleccionaremos la opcin Run as ->2 Ant Build.

Veremos la siguiente ventana:

La pestaa visible por defecto es Targets, el target predeterminado es main. Aqu podemos seleccionar que targets del script queremos ejecutar, pueden ser varios e incluso podemos ordenarlos. Por ejemplo si dejamos seleccionado nicamente el target compila y hacemos click en Run estaremos ejecutando el build.xml de forma personalizada y el resultado ser que solo se compilaran los archivos fuente. En la configuracin se pueden modificar varias cosas, y es que podemos sacar provecho de Ant tanto desde el interior del IDE como desde afuera, por ejemplo podemos pasarle argumentos para la ejecucin, esto lo podemos ver en la pestaa Main.

Luego de una ejecucin personalizada, la configuracin queda guardada como predeterminada, por lo que si volvemos a ejecutar nuestro build.xml de la forma rpida en Run as ->1 Ant Build se ejecutara la ultima configuracin utilizada.

Varias configuraciones para un constructor Ant


Anteriormente vimos que se puede configurar la ejecucin de nuestro build.xml antes de ejecutarlo, y esta queda guardada como predeterminada para la prxima vez. Ahora prestemos atencin en la barra de herramientas, tenemos un historial de configuraciones de ejecucin usadas junto a otras opciones:

Desde 1 ProyectoAnt Build.xml podemos ejecutar bajo configuracin predeterminada. De hecho es lo mismo que seleccionar Run as ->1 Ant Build desde la pestaa Package Explorer, que a su ves es lo mismo que hacerlo desde aqu mismo.

Una ventaja es que es ms cmodo trabajar desde aqu que desde el Package Explorer. Veamos la opcin External Tools Configurations, desde esta podemos administrar, crear y ejecutar las configuraciones de ejecucin guardadas. Por el momento la nica configuracin guardada es la predeterminada.

Podemos crear y guardar varias configuraciones de ejecucin para un mismobuild.xml. Para comprobarlo crearemos y guardaremos tres configuraciones diferentes: la primera ejecutara el target main, la segunda el target compila, y la tercera el target empaqueta. Los pasos son: 1- La primera configuracin ser la predeterminada que tenemos actualmente, pero le cambiaremos el nombre para poder tener todo mas organizado as que donde dice Name: modificamos ProyectoAnt build.xml por ProyectoAnt predeterminado build.xml, luego vamos a la pestaa Targets.

2- En la pestaa Targets nos aseguramos que este seleccionado el target main y luego guardamos los cambios con Apply.

3- Ahora que tenemos bien definida la configuracin predeterminada, para crear las otras dos que faltan, simplemente clonamos esta dos veces haciendo click derecho en ProyectoAnt predeterminado build.xml seleccionando Duplicate. Lo hacemos dos veces y as tendremos dos copias del original.

4- Lo nico que tenemos que hacer con estas dos copias es seguir los mismos pasos que hicimos para el original. En el segundo le cambiamos el nombre por ProyectoAnt solo compila build.xml y en los targets seleccionamos nicamentecompila. En el tercero le le cambiamos el nombre por ProyectoAnt solo empaqueta build.xml y en los targets seleccionamos nicamente empaqueta. Usar Apply para ir guardando los cambios.

Se puede ejecutar cualquiera de estas configuraciones creadas haciendo doble click sobre ellas o seleccionando Run. En el historial de configuracin de ejecuciones utilizadas siempre aparecern primero las ejecutadas mas recientes. Sin embargo podemos forzar el orden en el historial si especificamos los favoritos en Organize Favorites.

Utilizando Ant View


Otra de las facilidades que nos da el IDE Eclipse es la pestaa Ant View, en la cual podemos tener en forma aislada y practica nuestros scripts de Ant. Esta pestaa no es visible por defecto, se puede activar seleccionando en el men

Window -> Show View -> Ant.

En principio la pestaa esta vaca,

somos nosotros los que tenemos que cargarle los scripts Ant que estemos interesados. Para agregar uno a la lista, en el men de la pestaa seleccionamos el botn y se nos abre una ventana donde seleccionamos el build.xml de , pero este es para realizar una busqueda

nuestro proyecto, aceptamos en Ok. Tambin tenemos el botn

compleja en base a un paterno, algo ideal en caso de que tuviramos muchos scripts de Ant y solo estuviramos interesados en alguno especifico.

Ahora podemos ver el build.xml perteneciente a nuestro proyecto ProyectoAnt en la pestaa Ant View, tambin se puede apreciar su correspondiente estructura de targets, properties y etc.

Desde aqu podemos tambin ejecutarlo u abrirlo para modificarlo.

Ejecucin automtica del constructor Ant (build.xml) como constructor de proyecto


Podemos especificar nuestro script Ant como constructor de proyecto. Esto es muy til ya que podemos combinar nuestras tareas, ejecutndolas antes o despus, con respecto a las tareas llevadas a cabo por el constructor interno del IDE Eclipse. Seguiremos utilizando el mismo build.xml creado anteriormente. Los pasos son: 1- En el Package Explorer hacemos click derecho sobre nuestro proyecto y seleccionamos Properties.

2- Se nos abrir la ventana de propiedades de nuestro proyecto y seleccionamos la seccin Builders. Aqu estaremos viendo los constructores para nuestro proyecto, por el momento el nico listado ser el constructor interno del IDE. Agregaremos nuestro constructor Ant, que ya lo tenemos echo, a la lista seleccionando New.

3- En una nueva ventana que veremos seleccionamos Ant Builder y luego Ok.

4- Finalmente hemos llegado a la configuracin de la ejecucin de nuestro constructor Ant para la construccin del proyecto. La ventana que estamos viendo es muy similar a la ventana de External Tools Configurations donde podamos administrar diversas configuraciones para un solo build.xml. Desde a partir de aqu, en la pestaa Main comienza la configuracin: a. Especificamos un nombre para el constructor, en donde dice Name: introducimos Mi Constructor, luego en Build file: especificamos la ruta del scriptbuild.xml que podemos buscarla rpidamente con el botn Browse Workspace al lado, mas abajo en Base directory: especificamos el directorio raz de nuestro proyecto que podemos buscarlo rpidamente con el botn Browse Workspace al lado. Luego de todo esto seleccionamos la pestaa Refresh.

b. Por defecto los constructores de proyecto no actualizan luego de finalizar. Para poder estar al tanto de lo que sucede en nuestro IDE, seleccionaremos la casilla Refresh resources upon completion. Y luego para ser mas especficos, seleccionaremos la opcin The project containing the selected resource para que se actualicen solo los recursos relacionados a nuestro constructor Ant, esto ultimo lo hacemos mas que nada por motivos de eficiencia. Pasamos a la siguiente pestaa Targets.

c- Nos corresponde decidir bajo que eventos del IDE queremos que nuestro constructor sea ejecutado y que targets de este sern ejecutados. Los eventos posibles son: After a Clean: sucede luego de que ordenamos una limpieza con la opcin Clean. Manual Build: sucede cuando ordenamos la construccin del proyecto. Auto Build: sucede en forma automtica, si esta activada la opcion de Build Automatically. Por ejemplo se ejecuta la construccin del proyecto luego de guardar cambios. Esta opcin puede afectar el rendimiento. During a Clean: sucede mientras se realiza una limpieza ordenada con la opcin Clean. Los eventos activadas por defecto son los dos primeros, y el target seleccionado es el main de nuestro build.xml por lo que dir <default target selected>.

Como el constructor interno del IDE realiza la compilacin, y nuestro build.xmltambin, seleccionaremos para cada evento activado (After a Clean y Manual Build) solo el target empaqueta para que no se repita dos veces la compilacin. Esto lo podemos hacer en el botn Set Targets para cada evento, se nos abre una pequea ventana en la que seleccionamos nicamente empaqueta y guardamos con Ok.

d- La configuracin esta terminada. Guardamos todos los cambios en Apply y terminamos con Ok.

En la ventana de propiedades de nuestro proyecto podemos ver al constructor interno del IDE junto a nuestro constructor Ant, los dos activados. El orden en el que se encuentran listados determina el orden de ejecucin, lo cual se puede modificar con los botones Up y Down. As como se pueden agregar constructores tambin se pueden remover, excepto que no podemos remover el constructor interno del IDE aunque lo que si podemos hacerle es desactivarlo. Esto ultimo no es recomendable ya que el constructor interno esta vinculado a otras tareas importantes. Regresamos al espacio de trabajo con Ok.

Ya podemos probar el funcionamiento automtico de nuestro constructor Ant como constructor de proyecto. Realizamos una limpieza de nuestro proyecto seleccionando en el men Poject -> Clean, y luego veremos en la consola del IDE una salida de datos que nos demuestra que se ah ejecutado nuestro build.xml. Lo mismo debera de suceder si hacemos algn pequeo cambio en algn archivo de nuestro proyecto para poder guardar los cambios y luego ordenamos la construccin en el men Project -> Build project. En el directorio raz de nuestro proyecto deberamos de encontrar el tarro (Prueba de Ant v1.0.0.jar) con nuestras clases empaquetadas, incluso en el Package Explorer si actualizamos apretando F5aparecer en la lista. Nota: los constructores de proyectos no sirven nicamente para trabajar con Java, por eso se pueden elegir otras herramientas externas adems de Ant.

Exportar el proyecto con Ant


El IDE Eclipse nos permite exportar nuestro proyecto con Ant. Cuando exportamos, el IDE crea un constructor Ant predeterminado para un proyecto (o mas), al constructor le podemos agregar tareas desde otros .xml segn nuestras necesidades y lo podemos ejecutar de cualquiera de las formas anteriormente vistas. Resulta muy conveniente poder mantener las propiedades de nuestro proyecto en sincrona con el constructor Ant al regenerarlo automticamente con el IDE, entonces as como no tuvimos que escribirlo desde cero tambin se nos hace mucho mas fcil mantenerlo. Antes de experimentar con esta opcin lo primero que haremos ser cambiarle el nombre a nuestro build.xml por buildcustom.xml porque ahora trabajaremos con elbuild.xml generado por el IDE, para esto en el Package Explorer hacemos click derecho sobre el build.xml y seleccionamos Refactor -> Rename, luego le introducimos build-custom.xml. No hay

que olvidarse de que si habamos agregado ese build.xml como constructor de proyecto tenemos que quitarlo, as que en las propiedades del proyecto en la seccin Builders desactivamos el script Mi Constructor. Los pasos para exportar: 1- En la pestaa Package Explorer hacemos click derecho sobre nuestro proyecto y seleccionamos Export.

2- En la nueva ventana tenemos que elegir como exportar el proyecto, seleccionamos General ->Ant Buildfiles y continuamos con Next.

3- Ahora se puede especificar en base a que proyectos se creara el constructor Ant y otras propiedades bsicas como el nombre que tendr. Como es un ejemplo muy simple solo estamos interesados en dejar seleccionado nuestro proyecto, lo dems queda como esta en forma predeterminada, terminamos con Finish.

Ahora veremos que el IDE genera un build.xml con funciones predeterminadas para nuestro proyecto. Si abrimos ese archivo para editarlo veremos en el cdigo un comentario de advertencia que dice:
<!-- WARNING: Eclipse auto-generated file. Any modifications will be overwritten. To include a user specific buildfile here, simply create one in the same directory with the processing instruction as the first entry and export the buildfile again. -->

Aqu explica que como este archivo es regenerado automticamente por el IDE cualquier modificacin que hagamos ser sobrescrita y no quedara guardada. Por lo tanto si necesitamos agregar tareas propias tenemos que crearlas en otro script de Ant en el mismo directorio y su cdigo tiene que comenzar con la lnea <?eclipse.ant.import?>, luego exportamos nuevamente el proyecto con Ant y as elbuild.xml reconocer nuestro script para importar.

Este constructor Ant generado por el IDE puede ser usado de la misma forma que uno creado por nosotros mismos, la diferencia es que no podemos modificar elbuild.xml, pero si podemos ejecutarlo manualmente o definirlo como constructor de proyecto para que se ejecute automticamente de la misma forma como ya vimos antes con un simple script creado por mi.

Aadir tareas en un constructor Ant (build.xml) generado por el IDE


Como sabemos no podemos agregar tareas en el propio build.xml porque este es regenerado automticamente. As que crearemos un nuevo script de Ant con un target de ejemplo que representar la tarea que queremos agregar a la funcionalidad del build.xml generado por el IDE. 1- En nuestro proyecto creamos un nuevo archivo llamado build-user.xml. (Esto ya se explico antes) 2- Como el archivo no se llama build.xml el editor Ant del IDE no lo reconocer como script de Ant, esto sucedera normalmente en forma predeterminada a menos que hubiramos agregado otra asociacin de archivos, como por ejemplo *.xml, para el editor Ant. En mi caso uso la configuracin por defecto, por lo tanto no me sirve abrir el script normalmente con doble click y debo hacer algunos pasos extra para poder abrirlo con el editor Ant: a. En la pestaa Package Explorer hacemos click derecho sobre nuestro scriptbuild-user.xml y seleccionamos Open With -> Other.

b- Tendremos una lista de editores, elegimos Ant Editor y aceptamos con Ok.

3- Ahora que tenemos abierto build-user.xml con el editor Ant, introducimos el siguiente cdigo y guardamos. 1 <?eclipse.ant.import?> 2 <project default="extra"> 3 4 5 6 7 8 </project> Notar que el script debe de comenzar con <?eclipse.ant.import?>. 4- Para que el build.xml del IDE importe nuestro script Ant necesitamos exportar el proyecto con Ant nuevamente de la misma forma que hicimos antes, esto regenerara el build.xml. Bsicamente lo que suceder es que el IDE buscara en el mismo directorio donde generara su build.xml otros archivos de extensin .xml que comiencen con la lnea: <?eclipse.ant.import?>. Despus de esto deberamos de ver dentro del cdigo del nuevo build.xml generado la lnea: <import file=build-user.xml/>. <target name="extra" description="Una tarea extra definida por el usuario."> <echo message="Esta es una tarea extra!" /> </target>

Y si por ejemplo ahora queremos ejecutar este build.xml de manera configurada (Run as), tendremos para elegir todos los targets generados por el IDE en los cuales build es el predeterminado, y adems tendremos los targets importados de nuestros scripts que en este caso lo nico que haba definido en mi build-user.xmlera el target extra que lo nico que hace es mostrar un mensaje en consola.

También podría gustarte