stringtranslate.com

Hormiga apache

Apache Ant es una herramienta de software para automatizar los procesos de compilación de software para aplicaciones Java [2] que se originó a partir del proyecto Apache Tomcat a principios de 2000 como reemplazo de la herramienta de compilación Make de Unix . [3] Es similar a Make, pero se implementa utilizando el lenguaje Java y requiere la plataforma Java. A diferencia de Make, que utiliza el formato Makefile , Ant utiliza XML para describir el proceso de compilación de código y sus dependencias. [4]

Publicado bajo una licencia Apache por la Apache Software Foundation , Ant es un proyecto de código abierto .

Historia

Ant ("Another Neat Tool") [5] fue concebido por James Duncan Davidson mientras preparaba el motor de Servlet y JSP de referencia de Sun Microsystems , más tarde Apache Tomcat , para su lanzamiento como código abierto . Se utilizó una versión propietaria de Make para construirlo en la plataforma Solaris , pero en el mundo del código abierto no había forma de controlar qué plataforma se utilizaba para construir Tomcat; por lo que Ant fue creado como una herramienta simple e independiente de la plataforma para construir Tomcat a partir de directivas en un "archivo de construcción" XML. Ant (versión 1.1) fue lanzado oficialmente como un producto independiente el 19 de julio de 2000.

Se han realizado varias propuestas para una versión 2 de Ant, como AntEater de James Duncan Davidson, Myrmidon de Peter Donald [6] y Mutant de Conor MacNeill, ninguna de las cuales logró una gran aceptación entre la comunidad de desarrolladores. [7]

En un momento (2002), Ant fue la herramienta de compilación utilizada por la mayoría de los proyectos de desarrollo de Java. [8] Por ejemplo, la mayoría de los desarrolladores de Java de código abierto incluyeron build.xmlarchivos con su distribución. [ cita requerida ] Debido a que Ant hizo que fuera trivial integrar las pruebas JUnit con el proceso de compilación, Ant permitió a los desarrolladores adoptar el desarrollo basado en pruebas y la programación extrema .

En 2004, Apache creó una nueva herramienta con un propósito similar llamada Maven .

Gradle , que es un software similar, fue creado en 2008, pero utiliza código Groovy (y algunos otros lenguajes) en lugar de XML.

Extensiones

WOProject-Ant [9] es solo uno de los muchos ejemplos de extensiones de tareas escritas para Ant. Estas extensiones se instalan copiando sus .jararchivos en libel directorio de Ant. Una vez hecho esto, estas extensiones de tareas se pueden invocar directamente en el build.xmlarchivo típico. Las extensiones WOProject permiten a los desarrolladores de WebObjects utilizar Ant para crear sus marcos y aplicaciones, en lugar de utilizar la suite Xcode de Apple .

Antcontrib[10] proporciona una colección de tareas tales como declaraciones condicionales y operaciones sobre propiedades, así como otras tareas útiles. [11] [12]

Ant-contrib.unkrig.de[13] implementa tareas y tipos para redes, interfaces de usuario Swing , procesamiento JSON y otros.

Existen otras extensiones de tareas para Perforce , .NET Framework , EJB y manipulaciones del sistema de archivos. [14]

Ejemplo

A continuación se muestra un build.xmlarchivo de muestra para una aplicación Java sencilla del tipo "Hola, mundo". Define cuatro objetivos: clean, [15] y clobber, cada uno de los cuales tiene una descripción asociada. El objetivo indica el objetivo como una dependencia. Esto le indica a Ant que antes de poder iniciar el objetivo, primero debe completarlo .compilejarjarcompilejarcompile

<?xml version="1.0"?> <project name= "Hello" default= "compilar" > <target name= "limpiar" description= "eliminar archivos intermedios" > <delete dir= "clases" /> </target> <target name= "clobber" dependents= "limpiar" description= "eliminar todos los archivos de artefactos" > <delete file= "hello.jar" /> </target> <target name= "compilar" description= "compilar el código fuente de Java en archivos de clase" > <mkdir dir= "clases" /> <javac srcdir= "." destdir= "classes" /> </target> <target name= "jar" dependent= "compilar" description= "crear un archivo Jar para la aplicación" > <jar destfile= "hello.jar" > <fileset dir= "classes" included= "**/*.class" /> <manifest> <attribute name= "Main-Class" value= "HelloProgram" /> </manifest> </jar> </target> </project>                                        

Dentro de cada objetivo se encuentran las acciones que Ant debe realizar para construir dicho objetivo; estas se realizan mediante tareas integradas. Por ejemplo, para construir el compile objetivo, Ant primero debe crear un directorio llamado classes(lo que Ant hará solo si no existe ya) y luego invocar el compilador de Java. Por lo tanto, las tareas utilizadas son mkdiry javac. Estas realizan una tarea similar a las utilidades de línea de comandos del mismo nombre.

Otra tarea utilizada en este ejemplo se denomina jar:

<jar destfile= "hola.jar" > 

Esta tarea de Ant tiene el mismo nombre que la utilidad de línea de comandos de Java, JAR, pero en realidad es una llamada al soporte de archivos JAR/ZIP integrado del programa Ant. Este detalle no es relevante para la mayoría de los usuarios finales, que simplemente obtienen el JAR que querían, con los archivos que pidieron.

Muchas tareas de Ant delegan su trabajo a programas externos, ya sean nativos o Java. Utilizan las tareas <exec>y de Ant <java>para configurar las líneas de comandos y manejar todos los detalles de la asignación de la información en el archivo de compilación a los argumentos del programa e interpretar el valor de retorno. Los usuarios pueden ver qué tareas hacen esto (por ejemplo <csv>, <signjar>, <chmod>, <rpm>), al intentar ejecutar la tarea en un sistema sin el programa subyacente en la ruta o sin un Kit de desarrollo de Java (JDK) completo instalado.

Portabilidad

Ant está diseñado para funcionar con todos los sistemas para los que hay entornos de ejecución de Java disponibles. Se utiliza con mayor frecuencia con Windows , Linux , macOS y otros sistemas operativos Unix , pero también se ha utilizado en otras plataformas como OS/2, OpenVMS, Solaris y HP-UX. [16]

Ant fue diseñado para ser más portátil que Make. [4] En comparación con Make, Ant utiliza menos comandos de shell específicos de la plataforma . Ant proporciona una funcionalidad integrada que está diseñada para comportarse de la misma manera en todas las plataformas. Por ejemplo, en el build.xmlarchivo de ejemplo anterior, el objetivo cleanclasses elimina el directorio y todo lo que contiene. En un Makefile, esto normalmente se haría con el comando:

rm -rf clases/

rmes un comando específico de Unix que no está disponible en otros entornos. Microsoft Windows , por ejemplo, utilizaría:

rmdir /S /Q clases

En un archivo de compilación Ant, se lograría el mismo objetivo utilizando un comando integrado:

 <eliminar dir= "clases" /> 

Además, Ant no distingue entre barra diagonal o barra invertida para directorios y punto y coma o dos puntos para separadores de ruta. Convierte cada uno al símbolo apropiado para la plataforma en la que se ejecuta.

Limitaciones

Existen extensiones de Ant de terceros (llamadas antlibs ) que proporcionan gran parte de la funcionalidad faltante. Además, el entorno de desarrollo integrado (IDE) de Eclipse puede crear y ejecutar scripts de Ant, mientras que el IDE de NetBeans utiliza Ant para su sistema de creación interno. Como ambos IDE son plataformas de desarrollo muy populares, pueden simplificar significativamente el uso de Ant. (Como beneficio adicional, los scripts de Ant generados por NetBeans se pueden utilizar fuera de ese IDE como scripts independientes).

Véase también

Referencias

  1. ^ "Noticias del proyecto Apache Ant" . Consultado el 30 de agosto de 2023 .
  2. ^ "Apache Ant - Bienvenido". ant.apache.org . Consultado el 25 de enero de 2022 .
  3. ^ "Apache Ant - Preguntas frecuentes". ant.apache.org . Consultado el 25 de enero de 2022 .
  4. ^ ab Moodie 2005, pp. 5–9, Capítulo §1 Introducción a Ant.
  5. ^ "¿Por qué lo llamas Ant? – Preguntas frecuentes sobre Apache Ant".
  6. ^ Peter Donald. "Myrmidon: La propuesta Ant2.0".
  7. ^ MacNeill, Conor (4 de agosto de 2005). "La historia temprana del desarrollo de las hormigas".
  8. ^ Wiley (2002). Herramientas Java para programación extrema . pág. 76.
  9. ^ "WOProject-Ant – WOProject / WOLips – Confluence". Archivado desde el original el 8 de enero de 2009.
  10. ^ "Contribución de hormigas".
  11. ^ "Tareas de Ant-Contrib".
  12. ^ Moodie 2005, págs. 266–267, Capítulo §10 Escritura de tareas personalizadas: uso de tareas personalizadas de terceros.
  13. ^ "ant-contrib.unkrig.de".
  14. ^ "Descripción general de las tareas de Ant".
  15. ^ Moodie 2005, págs. 121–125, Capítulo §5 Creación de un proyecto - Ensamblaje del proyecto - Manipulación de la ubicación del archivo.
  16. ^ Manual de Apache Ant. Sección "Requisitos del sistema".

Lectura adicional

Enlaces externos