Apache Ant, es originalmente a java lo que la herramienta Makefile a gcc, permite automatizar la compilación, pruebas, documentación, distribución y puesta en funcionamiento de nuestras aplicaciones.
NAnt es una implementación del sistema para la plataforma .net, así que gran parte de lo contado aquí es válido para ambas plataformas.
Introducción
Ant está basado en tareas, y se diferencia de comandos de shell y ficheros make en que la sintaxis está basada en XML en vez de comandos. Esto permite que sea independiente del sistema operativo en el que se implementa.
Respecto a la compatibilidad, los editores actuales de Java (NetBeans y Eclipse) lo soportan soportan nativamente, de hecho concretamente en Netbeans la compilación se hace a través de un fichero Ant que se genera automáticamente.
Ejemplo de uso
El siguiente ejemplo muestra un fichero estándar de Ant, contiene información del proyecto, y las diferentes tareas llamadas target que tienen el atributo correspondiente al nombre, y las diferentes acciones a realizar.
<project name="MyProject" default="dist" basedir="."> <description> simple example build file </description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile" description="generate the distribution" > <!-- Create the distribution directory --> <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --> <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/> </target> <target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project>
Las acciones que se muestran en este ejemplo son:
- Creación / borrado de directorios.
- Compilación.
- Distribución y empaquetado.
- Copia a un servidor remoto vía FTP.
- Copia de ficheros
- Compresión en zip.
- Pruebas.
- Generación de documentación (Existe un plugin para ejecutar Doxygen).
Además, debido a que está integrado con los entornos de desarrollo, se pueden ejecutar tareas en momentos clave, como antes de la compilación, justo después, justo antes del empaquetado, etc.
Un escenario posible podría ser el de la entrega de una versión de un producto, donde con un único script podríamos compilar, pasar las pruebas unitarias, de integración y de aceptación, generar la documentación, ofuscar el código, empaquetarlo, generar un ejecutable, enviarlo vía FTP y recibiendo un e-mail con los resultados.
Conclusiones:
Una de las cosas que es deseable tener en un proyecto de desarrollo, es este script mágico que nos da un entregable del producto en un paso. Ant permite llevar a cabo esta tarea, ahorrarnos complicaciones y mejorar nuestra productividad.