¿Qué es la hormiga?
Apache Ant es una herramienta de generación basada en Java. Según el fundador original James Duncan Davidson, el nombre de esta herramienta es el acrónimo de otra herramienta ordenada.
¿Qué hace la hormiga?
Las herramientas de generación se utilizan en el desarrollo de software para convertir el código fuente y otros archivos de entrada en archivos ejecutables (y posiblemente a formatos de imagen de producto instalables). A medida que el proceso de generación de aplicaciones se vuelve más complejo, se vuelve aún más importante garantizar que se usen exactamente los mismos pasos de generación durante cada generación, al tiempo que logran la mayor automatización posible para generar versiones de generación consistentes de manera oportuna.
Ventajas de la hormiga:
ANT es una herramienta de compilación basada en Java. En teoría, es algo similar a Make in (Unix) C, pero no tiene defectos. La última versión es: Ant 1.8.4. Como ya tenemos, Gnumake, NMake, JAM y otras herramientas de compilación, ¿por qué necesitamos una nueva herramienta de compilación? Debido a que el autor original de Ant no puede tolerar las limitaciones e inconvenientes de estas herramientas al desarrollar software en múltiples plataformas (de hardware). Las herramientas creativas están esencialmente basadas en el shell: calculan las dependencias y luego ejecutan comandos (estos comandos no son muy diferentes de los comandos que escribe en la línea de comandos). Esto significa que puede extender fácilmente la herramienta utilizando programas específicos del sistema operativo o escribiendo nuevos programas (de comando); Sin embargo, también significa que se limita a un sistema operativo específico, o tipos de sistema operativo específicos, como UNIX.
Ant es diferente. A diferencia del modo de extensión en función de los comandos de shell, Ant usa clases Java para extender. (Usuario) No hay necesidad de escribir comandos de shell. El archivo de configuración se basa en XML. Se pueden ejecutar varias tareas llamando al árbol de destino. Cada tarea es ejecutada por un objeto que implementa una interfaz de tarea específica.
ANT define las dependencias entre los archivos generados, que utiliza clases de Java multiplataforma. Con ANT, puede escribir un archivo de generador único que funcione de manera consistente en cualquier plataforma Java (porque Ant en sí se implementa en el lenguaje Java), que es la mayor ventaja de Ant.
Ant genera análisis de archivos:
Ant no define su propia sintaxis personalizada; En cambio, sus archivos generados se escriben en XML. Hay un conjunto de elementos XML predefinidos que Ant puede entender, y también se pueden definir nuevos elementos para extender la funcionalidad de Ant. Cada archivo de compilación consiste en un solo elemento de proyecto, que a su vez contiene uno o más elementos de destino. Un objetivo es un paso definido en el proceso de generación, que realiza cualquier número de operaciones, como compilar un conjunto de archivos de origen. Y estas operaciones mismas son realizadas por otras etiquetas de tareas dedicadas y luego estas tareas se agruparán en elementos de destino individuales según sea necesario. Todas las operaciones requeridas para un proceso de generación único se pueden colocar en un solo elemento objetivo, pero eso reduce la flexibilidad. Por lo general, es preferible dividir esas operaciones en pasos de generación lógica, cada paso contenido en su propio elemento objetivo. Esto permite que las partes individuales del proceso de generación general se realicen sin ejecutar necesariamente otras partes.
Por ejemplo, al llamar solo a ciertos objetivos, puede compilar el código fuente de su proyecto sin tener que crear un archivo de proyecto instalable. El elemento de proyecto de nivel superior debe contener un atributo predeterminado, que especifica el objetivo que se ejecutará si se llama a Ant. Luego debe usar el elemento objetivo para definir el objetivo en sí.
Aquí hay un archivo básico generado:
<? Xml versión = "1.0"?> <Project Default = "init"> <Target Name = "Init"> </Target> </Project>
Uso básico de hormiga:
1. Configurar variables de entorno:
Ant_home: c: /ant-1.8 -----> ruta de directorio de instalación/descompresión de Ant
Agregar a la ruta: c: /ant-1.8/bin -----> ruta de directorio de bin en hormiga
2. Confirme si la configuración de la variable de entorno abre con éxito la ventana CMD y luego ingrese el comando: Ant:
Vea la siguiente pantalla:
Dado que Ant necesita tener un archivo build.xml de forma predeterminada al construir, existe el mensaje anterior, lo que significa que el entorno de Ant se ha configurado con éxito.
3. Cree una carpeta llamada Helloworld usando hormiga:
Primero, debe editar build.xml:
<? Xml versión = "1.0"?> <Project Default = "init"> <target name = "init"> <span style = "color:#ff0000;"> <mkdir dir = "helloworld"> </span> </argast> </jection>
Luego, cambie al directorio donde se encuentra el archivo Build.xml, ingrese Ant, y si hay un mensaje de la siguiente manera, la creación de la carpeta tendrá éxito:
(La parte init es equivalente a la salida del registro)
4. También puede usar Ant para crear directorios de archivos anidados de nivel multinivel que solo necesitan modificarse en el archivo build.xml:
<? Xml versión = "1.0"?> <Project Default = "init"> <target name = "init"> <span style = "color:#ff0000;"> <mkdir dir = "helloworld/a/b/c"/> </span> </target> </proyecto>
5. Elimine el directorio de nivel múltiple como se indica arriba:
<? Xml versión = "1.0"?> <Project Default = "init"> <target name = "init"> <span style = "color:#ff0000;"> <delete dir = "helloworld"/> </span> </argast> </jection>
Nota: Aquí la ruta solo necesita ingresar a la ruta de directorio de más alto nivel, que es exactamente la potencia de la herramienta hormiga:
Si desea eliminar un directorio en Java, puede eliminarlo a menos que el directorio esté vacío, de lo contrario debe eliminarlo gradualmente.
Usando la herramienta ANT, puede eliminar directamente las carpetas que contienen subdirectorios.
Veamos otro archivo XML de muestra:
<? Xml versión = "1.0"?> <Project Default = "init" name = "Project"> <Scuidion> Un proyecto simple que introduce el uso de etiquetas de descripción en archivos de compilación de hormiga. </descripción> <!-Los comentarios de XML también se pueden usar-> <target name = "init" description = "inicializando la base de datos de argon"> <!-Realice los pasos de inicialización aquí-> </target> </proyecto>
Como se puede ver, los comentarios de XML se pueden usar a lo largo del archivo de compilación para mayor claridad. Además, Ant define su propio elemento de descripción y los atributos de descripción, que pueden usarse para proporcionar anotaciones más estructuradas.
Atributo de hormigas:
Las propiedades en ANT son similares a las variables en los lenguajes de programación, y todas tienen nombres y valores. Sin embargo, a diferencia de las variables habituales, una vez establecidas, las propiedades en ANT no se cambian; Son inmutables, al igual que los objetos de cadena en el lenguaje Java. Esto puede parecer restrictivo al principio, pero es seguir el principio simple de Ant: después de todo, es una herramienta de generador, no un lenguaje de programación. Si intenta asignar un nuevo valor a una propiedad existente, esto no se considerará un error, pero la propiedad aún conservará su valor existente
Definición y uso de propiedades:
<propiedad name = "metal" value = "beryllium"/>
Para hacer referencia a esta propiedad en otras partes del archivo generado, use la siguiente sintaxis:
Copie el código de la siguiente manera: $ {metal}
Por ejemplo, para usar este valor que forma parte del valor de otra propiedad, escriba la etiqueta de la siguiente manera
<propiedad name = "metal-database" value = "$ {metal} .db"/>
Atributo de ubicación:
Los atributos a menudo se usan para hacer referencia a archivos o directorios en los sistemas de archivos, pero para plataformas que usan diferentes separadores de rutas (por ejemplo, / y /), esto puede causar problemas al abarcar diferentes plataformas. El atributo de ubicación de Ant está diseñado específicamente para incluir rutas del sistema de archivos de manera independiente de la plataforma. Use ubicación en lugar de valor como este:
<Property name = "Database-File" Ubicación = "Archive/Database/$ {Metal} .db"/> Los caracteres separados por ruta utilizados para el atributo de ubicación se convertirán en el formato correcto de la plataforma actual; Y dado que el nombre del archivo es relativo, se considera que es relativo al directorio base del proyecto. También podemos escribirlo fácilmente de la siguiente manera:
<Property name = "Database-File" Ubicación = "Archive/Database/$ {Metal} .db"/>Ambas versiones de esta etiqueta tendrán el mismo comportamiento en diferentes plataformas.
Definición de dependencias:
La generación de un proyecto generalmente requiere muchos pasos; por ejemplo, primero debe compilar el código fuente y luego empaquetarlo en un archivo de archivo Java (JAR). Muchos de estos pasos tienen un orden claramente definido; por ejemplo, no puede empaquetar el archivo de clase hasta que el compilador lo genera desde el código fuente. A diferencia de los objetivos de especificación secuencial, ANT adopta un enfoque más flexible para definir las dependencias. Cada objetivo se define en función de todos los demás objetivos que deben lograrse antes de que pueda ejecutarse. Esto se logra utilizando el atributo depende del elemento objetivo
<Target name = "init"/> <target name = "preprocess" depende = "init"/> <target name = "compile" depende = "init, preprocess"/> <target name = "paquete" depende = "compilar"/>
Este método le permite realizar el proceso de generación en cualquier etapa del proyecto; ANT ejecutará primero la fase de requisito previo definido. En el ejemplo anterior, si Ant completa el paso de compilación, determinará que los dos objetivos de init y preprocesos deben ejecutarse primero. El objetivo Init no depende de ningún otro objetivo, por lo que se ejecutará primero. ANT luego verifica el preprocessstarget y descubre que depende del objetivo init; Desde que este último ha sido ejecutado, Ant no lo volverá a ejecutar, por lo que comienza a ejecutar el objetivo de preprocesos. Finalmente, la tarea de compilación en sí se puede ejecutar.
Tenga en cuenta que el orden en que los objetivos aparecen en el archivo generado no es importante: el orden en el que la ejecución se determina de manera única por el atributo depende.