Apache Ant
Apache Ant es una herramienta usada en programación para la realización de tareas mecánicas y repetitivas,[1] normalmente durante la fase de compilación y construcción (build). Es, por tanto, un software para procesos de automatización de compilación, similar a Make pero desarrollado en lenguaje Java y requiere la plataforma Java, así que es más apropiado para la construcción de proyectos Java.
Apache ANT (Another Neat Tool) | ||
---|---|---|
Información general | ||
Tipo de programa | Automatización de compilación | |
Desarrollador | Apache Software Foundation | |
Lanzamiento inicial | 19 de julio de 2000 | |
Licencia | Apache License 2.0 | |
Idiomas | inglés | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | Java | |
Versiones | ||
Última versión estable | 1.10.7 (info) ( 5 de septiembre de 2019 (5 años, 2 meses y 26 días)) | |
Archivos legibles | ||
Ant build file | ||
Enlaces | ||
Esta herramienta, hecha en el lenguaje de programación Java, tiene la ventaja de no depender de las órdenes del shell de cada sistema operativo, sino que se basa en archivos de configuración XML y clases Java para la realización de las distintas tareas, siendo idónea como solución multi-plataforma.
La diferencia más notable entre Ant y Make es que Ant utiliza XML para describir el proceso de generación y sus dependencias, mientras que Make utiliza formato makefile.
Por defecto, el archivo XML se denomina build.xml
.
Ant es un proyecto de la Apache Software Foundation. Es software open source, y se lanza bajo la licencia Apache Software.
Historia
editarANT (siglas de "Another Neat Tool", en español "Otra Ingeniosa Herramienta", que en inglés significan "hormiga"[2]) fue creado por James Duncan Davidson mientras realizaba la transformación del proyecto Solar de Sun Microsystems en código abierto (concretamente la implementación del motor JSP/Servlet de Sun, que luego se llamaría Jakarta Tomcat). Se usó una versión de código propietario de make para construirlo en entorno Solaris Operating Environment. En un entorno cerrado Make funcionaba correctamente bajo plataforma Solaris, pero para el entorno de código abierto, donde no era posible determinar la plataforma bajo la que se iba a compilar Tomcat, era necesaria otra forma de trabajar. Así nació Ant como un simple intérprete que cogía un archivo XML "build file" para compilar Tomcat independientemente de la plataforma sobre la que operaba. ANT (versión 1.1) fue lanzado oficialmente como un producto independiente el 19 de julio de 2000. A partir de este punto la herramienta fue adoptando nuevas funcionalidades y actualmente es un estándar en el mundo Java.
Se han hecho varias propuestas para una versión Ant 2, como AntEater (oso hormiguero) por James Duncan Davidson, Myrmidon por Peter Donald y Mutant (mutante) por Conor MacNeill, ninguno de los cuales fueron capaces de encontrar gran aceptación en la comunidad de desarrolladores.[3]
Uso
editarPara utilizar ANT basta con disponer de una distribución binaria de ANT y tener instalado la versión 1.4 o superior del JDK. La distribución binaria consiste en la siguiente estructura de directorios: La carpeta "ant" contiene las carpetas "bin" (que asimismo contiene scripts de lanzador), "lib" (que contiene las dependencias necesarias y los .JAR de Ant), "docs", (que contiene la documentación de Ant, incluyendo una descripción, imágenes y un manual), y "etc" (que contiene valiosos archivos .XSL para crear informe de mejora de la salida XML de varias tareas, migrar los archivos de creación y deshacerse de la "obsoleta" alerta, y más). Pero solo se necesitan los directorios bin y lib para ejecutar ANT.
Ejecución de ANT
editarPara ejecutar ANT basta con escribir ant en la línea de comandos. Si se ha especificado la ejecución de un objetivo por defecto en la cabecera del proyecto del fichero build.xml no es necesario el uso de ningún parámetro ya que, se ejecutará este por defecto. Para utilizar un buildfile diferente de build.xml hay que añadir el parámetro -buildfile nombre_fichero, donde nombre_fichero es el buildfile que se quiere utilizar:
ant -buildfile buildfile_alt.xml
Si se desea ejecutar uno o varios objetivos concretos, se debe añadir el nombre de este o estos objetivos en la línea de comandos vv:
ant clean
En este caso se ignorara el objetivo indicado en la cabecera del proyecto.
Características
editarHoy en día, ANT es la herramienta de construcción de software (compilación) utilizada por la mayoría de los proyectos de desarrollo de Java.[4] Por ejemplo, la mayoría de desarrolladores de código abierto incluye archivos build.xml en sus distribuciones [cita requerida]. Debido a que ANT ha hecho trivial [cita requerida] el integrar pruebas JUnit con el proceso de generación (compilación), ANT ha hecho fácil para los desarrolladores adoptar el desarrollo basado en pruebas, e incluso extreme programming.
Limitaciones
editar- Al ser una herramienta basada en XML, los archivos Ant deben ser escritos en XML. Esto es no sólo una barrera para los nuevos usuarios, sino también un problema en los proyectos muy grandes, cuando se construyen archivos muy grandes y complejos. Esto quizá sea un problema común a todos los lenguajes XML, pero la granularidad de las tareas de Ant (comparado con Maven, por decir alguno), significa que los problemas de escalabilidad llegan pronto.
- La mayoría de las antiguas herramientas — las que se usan todos los días, como <javac>, <exec> y <java> — tienen malas configuraciones por defecto, valores para opciones que no son coherentes con las tareas más recientes. Esta es la maldición de la compatibilidad hacia atrás: cambiar estos valores supone estropear las herramientas existentes.
- Cuando se expanden las propiedades en una cadena o un elemento de texto, las propiedades no definidas no son planteadas como error, sino que se dejan como una referencia sin expandir (ej.: ${unassigned.property}). De nuevo, esta es una cuestión de la compatibilidad hacia atrás, incluso se reconoce que tener la herramienta desactivada es normalmente la mejor opción, al menos hasta el punto que el mítico producto "Ant2.0" falle en propiedades no asignadas.
- No es un lenguaje para un flujo de trabajo general, y no debería ser usado como tal. En particular, tiene reglas de manejo de errores limitadas, y no tiene persistencia de estado, así que no puede ser usado con confianza para manejar una construcción de varios días.
Estructura de un fichero build.xml
editarLos ficheros buildfiles de ANT están escritos en XML. Cada buildfile contiene un proyecto (project) y al menos un objetivo (target). Cada objetivo puede contener varias tareas (task) que son fragmentos de código a ejecutar. Un proyecto, además, puede constar de diversas propiedades. Cada propiedad consta de nombre y valor y son usadas para asignar valores a los atributos de los task.
Extensiones
editarWOProject-Ant[5] es uno de los muchos ejemplos de una tarea de extensión escrita para ANT. Estas extensiones son puestas en uso copiando los archivos jar en el directorio lib. Una vez hecho esto, estas tareas de extensión pueden ser invocadas directamente en el típico archivo build.xml. Las extensiones de WOProject WebObjects permiten a los desarrolladores el uso de ANT en la construcción de sus marcos y aplicaciones, en lugar de la suite Apple Xcode.
Antcontrib[6] proporciona un conjunto de tareas tales como sentencias condicionales y operaciones sobre las propiedades, así como otras tareas útiles.[7]
Existen otras extensiones de tareas para Perforce, .NET, EJB, y manipulaciones del sistema de archivos, por nombrar algunos.[8]
Portabilidad
editarUna de las primeras ayudas de Ant fue solucionar los problemas de portabilidad de Make. En un Makefile las acciones necesarias para crear un objetivo se especifican como órdenes de Intérprete de comandos que son específicos de la plataforma, normalmente un shell de Unix. Ant resuelve este problema proveyendo una gran cantidad de funcionalidades por él mismo, que pueden garantizar que permanecerán (casi) idénticas en todas las plataformas.
Referencias
editar- ↑ Página oficial del proyecto Apache Ant (en inglés)
- ↑ Why do you call it Ant?, Apache Ant FAQ
- ↑ Conor MacNeill -- The Early History of Ant Development
- ↑ Java Tools for eXtreme Programming, Wiley, 2002: 76
- ↑ WOProject-Ant - WOProject / WOLips - Confluence
- ↑ Ant-Contrib Tasks
- ↑ Ant-Contrib Tasks
- ↑ Overview of Ant Tasks
Bibliografía
editar- Loughran, Steve; Hatcher, Erik (12 de julio de 2007). Ant in Action (2nd edición). Manning Publications. p. 600. ISBN 978-1932394801.
- Holzner, Steven (13 de abril de 2005). Ant - The Definitive Guide (2nd edición). O'Reilly Media. p. 334. ISBN 978-0596006099.
- Moodie, Matthew (16 de noviembre de 2005). Pro Apache Ant (1st edición). Apress. pp. 360. ISBN 978-1590595596.
- Bell, Alexis T. (7 de julio de 2005). ANT Java Notes: An Accelerated Intro Guide to the Java ANT Build Tool (1st edición). Virtualbookworm.com Publishing. p. 268. ISBN 978-1589397385.
- Hatcher, Erik; Loughran, Steve (agosto de 2002). Java Development with Ant (1st edición). Manning Publications. pp. 672. ISBN 978-1930110588.
- Niemeyer, Glenn; Poteet, Jeremy (29 de mayo de 2003). Extreme Programming with Ant: Building and Deploying Java Applications with JSP, EJB, XSLT, XDoclet, and JUnit (1st edición). SAMS Publishing. p. 456. ISBN 978-0672325625.
- Williamson, Alan (1 de noviembre de 2002). Ant - Developer's Handbook (1st edición). SAMS Publishing. p. 456. ISBN 978-0672324260.
- Matzke, Bernd (septiembre de 2003). ANT: The Java Build Tool In Practice (1st edición). Charles River Media. p. 280. ISBN 978-1584502487.
- Gómez-Sanz, J. & Pavón, J. INGENIAS Development Kit (IDK) Manual. Facultad de Informática, Universidad Complutense de Madrid, España. 2004. Disponible en: [1].
Véase también
editar- Libros de texto en Wikilibros.
- Portal:Software libre. Contenido relacionado con Software libre.
- Compilación
- Maven, una herramienta de automatización de compilaciones y gestión de proyectos principalmente enfocada a Java
- Nant, Ant-like herramienta enfocada al entorno .NET más que a Java
- Java (lenguaje de programación)
Enlaces externos
editar- Página oficial del proyecto Apache Ant
- (en inglés) Wiki de Apache Ant
- (en inglés) Manual de usuario de Apache Ant
- (en inglés) Manual de usuario de Ant-Contrib, con extensiones para compilar C++
- Primeros pasos con Apache Ant
- Tutorial completo sobre Ant
- Tutorial Apache Ant con ejemplo
- (en inglés) WinAnt - Windows installer de Apache Ant
- (en inglés) Introduction to Ant (slide show)
- (en inglés) Linguine Maps visualization library (produce automáticamente diagramas fáciles de leer desde archivos construidos de Ant)
- (en inglés) Antro, un perfilador para scripts de Ant
- Wikilibro para aprender Apache Ant
- (en inglés) Libro Wiki sobre Apache Ant
- (en inglés) Ant tutorial
- (en inglés) Ant Automation, un ejemplo bueno y manejable de automatización con Apache Ant.
- (en inglés) Una interfaz gráfica de Ant para Windows