http://www.irit.fr/~Philippe.Truillet Ant Ph. Truillet Septembre 2016 – v. 1.3 Ant (http://ant.apache.org) est un outil créé par la fondation Apache qui permet de gérer la construction d’une application. Le nom est un acronyme pour « Another Neat Tool » (un autre chouette outil). A l’origine, Ant est un sous-projet de Jakarta puis est depuis devenu l’un des projets majeurs de la fondation, de par son utilité et sa popularité. Ant peut se comparer à la commande make (même rôle, mêmes fonctionnalités) et Apache maven (http://maven.apache.org - qui fournit des moyens de configuration plus simples). Il offre l’avantage de pouvoir intégrer des tests tout du long du processus de construction (avec JUnit par exemple), d’être multi-plateforme (Java oblige) et d’être extensible de multiples manières. Couplé à des systèmes de gestion de version comme CVS ou SVN, Ant permet par exemple de créer des « nightly builds » : chaque nuit, sur une machine donnée, il compile l’ensemble des fichiers sources d’un projet ensemble, et fait son rapport au(x) développeur(s). Cela permet de générer des versions utilisables, de tester les lignes de code de la journée, et de faire passer une batterie de tests à l’ensemble du projet - le tout sans intervention humaine. Lorsque l’équipe de développement arrive le lendemain, le rapport de Ant peut leur permettre de cerner les erreurs, ou de constater que le programme se compile parfaitement et est fonctionnel. 1. Installation Après avoir téléchargé une distribution du produit (dernière version publiée : 1.9.7 au 12 avril 2016) à l’adresse http://ant.apache.org/bindownload.cgi et l’avoir décompressé dans son répertoire définitif, il faut créer les trois variables d’environnement nécessaire au fonctionnement d’Ant. Par exemple, sous Windows au lancement du script dans un fichier .bat, ou via l’onglet « Avancé » des propriétés système (Menu Démarrer | Panneau de configuration | Système | Paramètres Système Avancés | Variables d’environnement): SET ANT_HOME=C:\ant SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10 (chemin vers la jdk) SET PATH=%PATH%;%ANT_HOME%\bin 2. Utilisation 2.1 le fichier build.xml Ant permet de gérer l’ensemble des travaux à l’aide d’un fichier XML nommé build.xml, spécifique à chaque projet, qui permet de spécifier les cibles, dépendances, conditions, opérations et paramètres de la construction. <project name="monprojet" default="dist" basedir="."> <description>Construction de mon projet</description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <property name="doc" location="doc"/> <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}" classpath="${build};." /> </target> Page 2 Apache Ant <target name="dist" depends="compile" description="generate the distribution" > <!-- Create the distribution directory --> <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the monprojet_version.jar file --> <jar jarfile="${dist}/lib/monprojet.jar" basedir="${build}"/> </target> <target name="javadoc" depends="init,compile,dist" description="Create the javadoc" > <!-- Javadoc the java code from ${src} into ${doc} --> <!-- Create the distribution directory --> <mkdir dir="${doc}"/> <javadoc destdir="${doc}" author="true" version="true"> <classpath path="${lib}" /> <source file="${src}/monprojet.java" /> <package name="fr.irit.ihcs.util "/> <sourcepath location="${src}" /> </javadoc> </target> <target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> <delete dir="${doc}"/> </target> <target name="demo" depends="init,compile,dist" description="Runs the demo monprojet> <java classname="fr.irit.ihcs.util.monprojet" classpath="${dist}/lib/monprojet_1.0.jar" fork="true"/> </target> </project> Exemple de fichier build.xml Ce fichier build.xml est assez simple facile à lire : on arrive à deviner quelles sont les tâches décrites ici : init, compile, dist, javadoc, clean et demo. L’attribut default de la balise globale project permet de pointer vers la balise target à exécuter. Etant donné que, via l’attribut depends, chaque balise target dépend de la précédente, on permet ainsi le parcours de toutes les opérations à accomplir. De son coté, la cible init, qui sert à initialiser certaines propriétés (une sorte de constructeur, donc) est toujours appelée en premier. Bien qu’optionnel, cet attribut depends se rend très utile car il permet donc de conditionner les tâches du fichier : une tâche donnée ne sera exécutée que si celle dont elle dépend est terminée, et ainsi de suite. Nota : Les commandes deltree, mkdir et javac, bien que connues, font en fait appel à des fonctions de Ant. Ant dispose d’ailleurs un bon nombre de commandes : copydir, jar, javadoc... 2.2 commandes ant Une fois le fichier XML construit et placé dans son dossier de projet, il suffit ensuite de taper ant dans la console pour construire l’application. Il est toutefois possible de lui donner une « cible » pour n’accomplir qu’une des tâches définies dans le fichier build.xml comme ant compile pour compiler les sources ou ant demo pour lancer l’application 3. Références Développons en java : http://www.jmdoudoux.fr/java/dej/chap059.htm Apache Ant 19.2 Manual, http://ant.apache.org/manual/index.html