Introducción a Java (4) : Ant Humberto Cervantes Maceda Alfonso Martínez Martínez 1 Abril 2005 Ant Ant es una herramienta extensible que permite automatizar el proceso de ensamblado Ensamblado = construcción y despliegue Similar a make Ant se va a ocupar de Compilación Generación de documentación Empaquetamiento Ejecución etc... 2 Por qué usar Ant ? Compilar en línea de comando es tedioso Dificil de repetir No portable Depender de un entorno de desarrollo para compilar no es práctico Que tál si a mi me gusta Eclipse y a otra persona NetBeans? Ant remedia ambos problemas 3 Conceptos básicos Ant funciona a partir de un script de ensamblado en formato XML (típicamente build.xml) Definido en termino de proyecto, targets y tasks Proyecto (uno sólo por archivo) Contiene un conjunto de targets Target Tiene un nombre y dependencias hacia otros targets Contiene un conjunto de tasks Tasks Operaciones básicas (javac, java, jar, etc...) 4 Conceptos básicos (2) Propiedades Globales (nombre y valor) <property name="output.dir" value="."/> Una vez definidas, son referenciables en otras partes del script ${output.dir} Las propiedades permiten escribir scripts “genericos” Solo hay que cambiar el valor de las propiedades para usarlo en distintos proyectos 5 Targets clásicos No hay un estándar para los targets de Ant, pero en general se usan los siguientes init – inicializa propiedades prepare – crea directorios de salida clean – borra directorios de salida compile – compila run – ejecuta package – empaqueta (binarios o fuentes) javadoc – genera documentación Dependencias son muy importantes 6 prepare depende de init todos dependen al menos de prepare run depende de compile etc... Tasks Existen distintas tareas definidas en Ant java javac jar javadoc copy mkdir etc... (ver ant.apache.org) Ant es extensible, nuevas tareas pueden ser incluidas 7 Ejemplo <project name="Vehiculos" default="all"> <!-- Set up output dir if not set externally --> <target name="setProps" unless="setProps" description="set up properties"> <property name="dist.dir" value="dist" /> <property name="mainclass.name" value="mx.uam.vehiculos.Principal"/> </target> <!-- Initialize properties --> <target name="init" depends="setProps"> <property name="debug.flag" value="on"/> <property name="output.dir" value="."/> <property name="build.dir" value="build"/> <property name="src.dir" value="src"/> <property name="lib.dir" value="lib"/> <property name="resource.dir" value="res"/> <property name="doc.dir" value="docs"/> <property name="javadoc.dir" value="${doc.dir}/javadoc"/> </target> 8 Ejemplo Compilación <!-- Compile --> <target name="compile" depends="prepare"> <javac srcdir="${src.dir}" destdir="${output.dir}" debug="${debug.flag}" verbose="no" deprecation="no"> <classpath> <pathelement location="${output.dir}"/> <fileset dir="${lib.dir}"> <include name="*.jar"/> </fileset> </classpath> <include name="**/*.java"/> </javac> </target> Invocación de ant desde consola ant [-f build.xml] [target] 9 Integración con Eclipse 10 Síntesis La herramienta Ant sirve para automatizar las tareas de construcción Permite describir todo el proceso de construcción en un archivo en formato xml Es una herramienta muy útil para liberar proyectos y permitir que sean ensamblados facilmente por terceros Se integra perfectamente con Eclipse Vale la pena usarlo siempre! 11