BREVE MANUAL
SOBRE
<APACHE ANT>
¿Apache Ant1? Ant es una herramienta que nos ayuda a compilar, empaquetar y distribuir soluciones de software2, en teoría semejante a make, gnumake, nmake, jam, etc. Debido a que Ant esta basado en el lenguaje de programación orientado a objetos JavaTM es independiente de plataforma, lo cual es una de sus principales ventajas en comparación a herramientas y utilerías existentes con la misma finalidad.
¿Porqué usar Ant? El proceso de compilación de un pequeño proyecto en lenguaje JavaTM es sencillo. Lo pasos para la compilación del convencional programa “HolaMundo” se describe en la siguiente figura.
HolaMundo.java
HolaMundo.class
Código
Archivo Binario
C:\>javac HolaMundo.java
Como notará la cantidad de archivos con código fuente que componen este proyecto es mínima (de 1), en estas condiciones y aun cuando los proyectos son un poco más complejos resulta difícil justificar el uso de Ant, exceptuando la independencia de plataforma. El beneficio aparece al compilar un proyecto que contenga gran número de archivos (incluso de diferentes tipos), en diferentes directorios, con dependencias (algunas no manejadas por el compilador de manera directa), en ocasiones se requiere de compilaciones separadas (EJB, RMI), empaquetar en diferentes formatos (JAR, WAR, EAR), etc. Aunque algunos entornos de desarrollo ofrecen algunas de estas funcionalidades ya sea implementado en el núcleo del entorno o mediante el mecanismo de herramientas auxiliares (plug-in’s), en la mayoría de los entornos se permiten el funcionamiento en conjunto con Ant. Por tanto uso de Ant es una buena alternativa.
¿Dónde se obtiene? Ant es parte del proyecto Jakarta (Apache Software Foundation) y este puede ser descargado del sitio oficial del proyecto (http://ant.apache.org/). Además en este sitio encontrará recursos relacionados al proyecto y al ser de licencia GNU la descarga, así como la de los recursos relacionados no le implicará gasto económico más allá del que requiere para realizar la descarga. Es importante aclarar que la distribución que debe descargar es la denominada binaria, debido a que esta se encuentra lista para instalarse y usarse. Si descarga la distribución de código fuente 1 2
Usaremos los términos Apache Ant y Ant como sinónimos Soluciones de Software = SDS
(también disponible), se requiere generar la aplicación mediante un proceso de compilación no descrito en este documento. En este documento se utiliza la versión APACHE ANT 1.5.3 descargada en el año 2003, del sitio antes mencionado.
Instalación La distribución a utilizar (binaria) no posee un asistente de instalación, de hecho al revisar el contenido del archivo descargado se puede apreciar una estructura de directorios semejante a esta: ant +--| +--| +--| | | | | | +--varias
bin
// contiene scripts de carga
lib
// contiene bibliotecas jar necesarias pasa el funcionamiento de Ant
docs // contiene la documentación +--- ant2 // Una breve descripción de los requerimientos de ant2 | +--- images // logotipos y documentación en html | +--- manual // Documentación de Ant etc // Contiene archivos XSL: // - Crea un reporte extendido de salido desde un archivo XML para // // //
tareas. - Migra los archivos build y gestiona los mensajes 'deprecated' - ... y más ;-)
Solamente los directorios bin y lib son requeridos para que funcione Ant. Para instalar Ant debe realizar la secuencia de pasos indicada adelante, es importante indicar que si alguno de estos pasos no se realiza, puede que Ant no se funcione de manera adecuada. 1.Seleccione un directorio y copie los archivos de la distribución en éste. Este directorio será conocido como ANT_HOME 2.Agregue la ruta del directorio bin a la variable de entorno del sistema operativo PATH 3.Cree una nueva variable de entorno con el nombre ANT_HOME con la cadena que representa el directorio donde se encuentren los archivos de la distribución binaria (Paso 1) 4.Opcional. Si no existe en sus sistema la variable de entorno JAVA_HOME y si esta instalada la maquina virtual de JavaTM (J2SE), créela con el valor que apunte al directorio en el cual esta instalada. Si no esta instalada la maquina virtual de JavaTM, instálela y cree la variable de entorno como se menciona arriba. Una manera de realizar lo antes mencionado en la consola de comandos de MS Windows es como se muestra en el siguiente fragmento de código. Se asume que la distribución se ubicó en el directorio c:\dev\ant y que la maquina virtual de JavaTM se encuentra instalada en c:\dev\j2se141: set ANT_HOME=c:\dev\ant set JAVA_HOME=c:\dev\j2se141 set PATH=%PATH%;%ANT_HOME%\bin
Utilizando Ant Para comenzar a utilizar Ant debemos corroborar que esta instalado y funciona correctamente. Para esto en una consola de comandos debemos ejecutar el siguiente código de shell: C:\ >ant -version
Y deberemos obtener una salida semejante a la siguiente, si esto no sucede debemos asegurarnos que los pasos descritos en la sección de instalación se realizar de manera adecuada. Apache Ant version 1.5.3 compiled on April 16 2003
Ant utiliza XML (eXtensible Markup Language) para describir los modulos involucrados en un proyecto al igual que sus dependencias. Ant then does the rest, compiling components as necessary in order to build the application Ant ejecuta un guión, un archivo llamado build.xml donde se definen las actividades a ejecutar. Un ejemplo de archivo podría ser: <project name="utnTags" default="creaLib" basedir="."> <property name="app.name" value="utnTags"/> <property name="app.version" value="1.0"/> <echo>Creamos los directorios <mkdir dir="../build" /> <echo>Compilamos los archivos <javac srcdir="." destdir="../build" /> <echo>A JAR <jar jarfile="../../devweb/src/web/WEB-INF/lib/utnTags.jar" basedir="../build" /> <echo>Borramos los temporales <delete dir="../build" />
En este ejemplo vemos que tenemos un proyecto que por defecto tiene que ejecutar las acción comprime. Como se puede observar, cada juego de acciones (target) puede declarar que depende (depends) de la ejecución de otros juegos de acciones. ANT, se asegurará de generar un árbol de dependencias y ejecutarlas en el orden adecuado para que el trabajo se complete.
La ejecución se realiza con: c:\>%RUTA_PROYECTO%\ant creaLib
Y el resultado de esta invocación se da como sigue: Sube un nivel en la jerarquía de directorios y crea el directorio build. <mkdir dir="../build" />
Compila todos los ficheros en el directorio actual y guarda los objetos en el directorio ../build. <javac srcdir="." destdir="../build" />
Genera un archivo jar con todo lo que hay en el directorio ../build. <jar jarfile="../../devweb/src/web/WEB-INF/lib/utnTags.jar" basedir="../build" />
Borramos los archivos temporales. <delete dir="../build" />
Si vamos a la documentación de Ant, podemos observar los distintos comandos que posee. También existen extensiones de tal modo que fabricantes de software (o tu mismo) pueden extender los actuales. AntFilter Replace AntCall FixCRLF Rmic AntStructure GenKey Sequential Apply/ExecOn Get SignJar Available GUnzip Sleep Chmod GZip Sql Condition Jar
Style Copy Java Tar Copydir Javac Taskdef Copyfile Javadoc/Javadoc2 Touch Cvs Mail TStamp CVSPass Mkdir Typedef Delete Move Unjar
Deltree Parallel Untar Dependset Patch Unwar Ear PathConvert Unzip Echo Property Uptodate Exec Record War Fail Rename Zip
Vamos a comentar algunos comandos que son sencillos y muy útiles: Echo: Nos ayuda a poner mensajes en nuestras secuencias <echo>Creamos los directorios
<mkdir dir="destino" /> <mkdir dir="jars" />
Es posible que nos interese introducir dentro de nuestro script otras secuencias y a través de las líneas de comando, decidir a cual invocamos. Un caso podría ser, crear un target, para borrar todo lo construido e invocarlo solo cuando nos interese. <project name="utnTags" default="creaLib" basedir="."> <property name="app.name" value="utnTags"/> <property name="app.version" value="1.0"/> <echo>Creamos los directorios <mkdir dir="../build" /> <echo>Compilamos los archivos <javac srcdir="." destdir="../build" /> <echo>A JAR <jar jarfile="../../devweb/src/web/WEB-INF/lib/utnTags.jar" basedir="../build" /> <echo>Borramos los temporales <delete dir="../build" />
Si desde la línea de comando, ejecutamos: c:\>%RUTA_PROYECTO%\ant borraTemp
Borramos los archivos temporales. Normalmente, se trabaja con propiedades (al estilo de variables) para que no nuestros scripts sean los más flexibles y reutilizables <property name="directorios.clases" value="destino" /> <echo>Creamos los directorios <mkdir dir="${directorios.clases}" /> <mkdir dir="jars" />
También podemos recoger los parámetros de invocación de línea de comando, las variables de entorno o variables en ficheros de propiedades o programas Java.