Aquest article o secció no cita les fonts o necessita més referències per a la seva verificabilitat. |
| |
Tipus | Java software library (en) , programari lliure, llenguatge interpretat i sistema de construcció |
---|---|
Versió inicial | 19 juliol 2000 |
Versió estable | |
Llicència | Llicència Apache, versió 2.0 |
Característiques tècniques | |
Sistema operatiu | multiplataforma |
Plataforma | Màquina Virtual Java |
Escrit en | Java |
Format de fitxer d'escriptura | |
Equip | |
Desenvolupador(s) | Apache Software Foundation |
Més informació | |
Lloc web | ant.apache.org (anglès) |
Stack Exchange | Etiqueta |
Seguiment d'errors | Seguiment d'errors |
Free Software Directory | Apache_Ant |
| |
Apache Ant és una eina usada en programació per a l'automatització de tasques mecàniques i repetitives, normalment durant la fase de compilació i construcció (build). És similar al make però és escrit en Java i està pensat per usar-lo amb el Java.
La diferència més notable entre Ant i make, és que Ant utilitza un fitxer en format XML per descriure el procés de construcció (build) i les seves dependències. Mentre que el make té el seu propi format Makefile. Per defecte el fitxer XML és anomenat build.xml
.
Ant és un projecte de codi obert de l'Apache Software Foundation, distribuït sota la llicència Apache.
build.xml
A continuació es mostra un fitxer d'exemple (build.xml) per a una aplicació "Hola món" en Java. El fitxer defineix tres objectius (targets) - clean, compile i jar, cadascun dels quals té una descripció associada. L'objectiu jar llista l'objectiu compile com a dependència. Això li diu a Ant que, abans de començar l'objectiu jar, ha de completar l'objectiu compile.
Dintre de cada objectiu hi han les accions que ha de prendre Ant per a construir l'objectiu. Per exemple, per a construir l'objectiu compile, Ant primer ha de crear un directori anomenat classes (Ant només ho farà si aquest no existeix prèviament) i després cridar al compilador de Java.
<?xml version="1.0"?>
<project name="Hello" default="compile">
<target name="clean" description="remove intermediate files">
<delete dir="classes"/>
</target>
<target name="clobber" depends="clean" description="remove all artifact files">
<delete file="hello.jar"/>
</target>
<target name="compile" description="compile the Java source code to class files">
<mkdir dir="classes"/>
<javac srcdir="." destdir="classes"/>
</target>
<target name="jar" depends="compile" description="create a Jar file for the application">
<jar destfile="hello.jar">
<fileset dir="classes" includes="**/*.class"/>
<manifest>
<attribute name="Main-Class" value="HelloProgram"/>
</manifest>
</jar>
</target>
</project>
Un dels primers objectius d'Ant va ser solucionar els problemes de portabilitat de Make. En un Makefile les accions necessàries per a crear un objectiu s'especifiquen com ordres d'intèrpret de comandes que són específics de la plataforma, normalment un shell d'Unix. Ant resol aquest problema proveint una gran quantitat de funcionalitats per ell mateix, que poden garantir que romandran (gairebé) idèntiques en totes les plataformes.
Per exemple, en l'exemple build.xml
anterior, l'objectiu (target) clean esborra el directori classes i tot el seu contingut. En un Makefile això normalment es faria amb l'ordre:
rm -rf classes/
rm
és una ordre específica de Unix que probablement no estarà disponible si el Makefile s'utilitza en un entorn no Unix com Microsoft Windows. En un fitxer de construcció Ant es pot aconseguir el mateix utilitzant una ordre pròpia:
<delete dir="classes"/>
Una discrepància comuna entre diferents plataformes és la manera que les rutes de directoris s'especifiquen. Unix usa la barra (/) per a delimitar els components d'una ruta, mentre que Windows utilitza la barra invertida (\). Els fitxers de Ant permeten a l'autor triar la seva convenció favorita, barres o barres invertides per a directoris, comas o punt i coma per a separar rutes. Ant ho converteix tot al format apropiat per a la plataforma utilitzada.
Ant va ser creat per James Duncan Davidson mentre realitzava la transformació d'un projecte de Sun Microsystems en codi obert (concretament la implementació de Servlets i JSP de Sun que després es diria Apache Tomcat). En un entorn tancat Make funcionava correctament sota la plataforma Solaris, però per a l'entorn de codi obert, on no era possible determinar la plataforma sota la qual s'anava a compilar, era necessària una altra forma de treballar. Així va néixer Ant com un simple intèrpret que agafava un arxiu XML per a compilar Tomcat independentment de la plataforma sobre la qual operava. A partir d'aquest punt l'eina va anar adoptant noves funcionalitats i actualment és un estàndard en el món Java.