Ant Introduction Jean-Jacques LE COZ
Outils de construction de projets ➢ Pour livrer un produit logiciel ➢ Compiler ➢ Documenter ➢ Packager ➢ Déployer ➢ Automatisation de ces tâches ➢ Make, Ant
Ant pour Java ➢ Outil populaire chez les développeurs ➢ Facile ➢ Souple ➢ Utilisation ➢ Standalone ➢ Intégrée dans un IDE
Ant : produit Open Source ➢ Produit ➢ Groupe Open Source Apache ➢ Auteur : James Duncan Davidson ➢ Acronyme de « another neat tool » ➢ Écrit en Java ➢ Licence : Apache Software Licence Version 2.0
Ant et Make ➢ Comparaison avec Make ➢ Même notion de dépendances entre tâches ➢ Contrairement à Make, Ant est indépendant vis à vis de la plateforme ➢ Ant est extensible
Ant : historique ➢ Au début Ant était un composant de Tomcat ➢ Devient un sous-projet de Apache Jakarta ➢ Première version en juillet 2000 ➢ Succès et standard de fait ➢ Promue en novembre 2002 comme projet à part entière. ➢ Version actuelle : 1.6.1
Anatomie d'un fichier Ant ➢ Par défaut un fichier Ant a pour nom build.xml ➢ Fichier XML ➢ Division en fonctions appelées target ➢ Dépendance entre target ➢ Exemple :
Ant : dépendances ➢ Dépendances entre target Exécutée en premier Exécutée en dernier
Description et commentaires ➢ Description ➢ Par une section ➢ Commentaires ➢ Par les commentaires XML premier projet avec ANT
Ant : propriétés ➢ Propriété ➢ Déclarée dans une section ➢ Définie par un couple nom + valeur ➢ Le nom sert de référence dans le reste du build ➢ ${metal} ➢ La valeur est immutable ➢ Exemple :
Propriétés déjà définies ➢ java.class.path ➢ os.name ➢ user.name ➢ user.home ➢ ant.version ➢ ant.file ➢ ant.project.name
Noms d'attributs déjà définis ➢ Attribut file ➢ Permet de lire les propriétés à partir d'un fichier ➢ Attribut environment ➢ Permet d'accéder aux variables d'environnement avec pour préfixe le nom de la propriété ➢ Exemple
Définition des dépendances ➢ Le build est divisé en target ➢ Exemple
Exécuter Ant ➢ Par ligne de commande ➢ Unix, Linux ou Windows ➢ $>ant ➢ Au sein d'un environnement de développement ➢ IDE multiples et variés ➢ Jedit, Jext, Jbuilder, IntelliJ IDEA, JDEE (Emacs), NetBeans, Eclipse,...
Sortie typique d'une exécution ➢ Exemple sur la sortie standard de la plateforme Buildfile: build.xml init: [mkdir] Created dir: E:\tutorials\ant\example\build [mkdir] Created dir: E:\tutorials\ant\example\dist compile: [javac] Compiling 8 source files to E:\tutorials\ant\example\build dist: [jar] Building jar: E:\tutorials\ant\example\dist\example.jarE:\ BUILD SUCCESSFUL Total time: 2 seconds
Options de la ligne de commande ➢ Par défaut le fichier de configuration a pour nom build.xml ➢ Sinon il faut l'option -buildfile ou -f ➢ L'option -D permet de positionner des propriétés ➢ Exemple : ➢ $>ant -Dmetal=acier
Écrire un build.xml (1) ➢ Compilation ➢ Section ➢ Autres attributs de la section javac
Écrire un build.xml (2) ➢ Compilation (suite) ➢ Ant peut être configuré pour utiliser des compilateurs différents et dans une JVM différente ➢ Jikes, GCJ,... ➢ Exemple : <javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac" memoryMaximumSize="128m"/>
Écrire un build.xml (3) ➢ Créer une archive jar ➢ Section ➢ Exemple :
Écrire un build.xml (4) ➢ Créer une archive jar (suite) ➢ Avec un manifest ➢ Exemple :
Exemple de build.xml (1) A simple Java project
Exemple de build.xml (2)
Time-stamp (1) ➢ Marquage de fichiers avec le temps ➢ Exemple : ➢ ➢ Si la tâche est invoquée le 15 avril 2004 ➢ Le fichier jar est nommé : package jar
Time-stamp (2) ➢ Propriétés ➢ Invoquées et initialisées avec la section ➢ Au début du build
Opérations sur le système de fichiers (1) ➢ Gestion de fichiers et répertoires ➢ Création et suppression de répertoires ➢
Opérations sur le système de fichiers (2) ➢ Gestion de fichiers et répertoires ➢ Copies, renommage et déplacement de fichiers et répertoires ➢
Opérations sur le système de fichiers (3) ➢ Création de fichiers zip et tar ➢
Opérations sur le système de fichiers (4) ➢ Modification du contenu des fichiers ➢ ➢ L'attribut summary=true permet d'afficher le nombre d'occurrences trouvées et remplacées.
Opérations sur le système de fichiers (5) ➢ Désignation d'un ensemble de fichiers ➢ Avec la section ➢ Attributs de ➢ Obligatoire : dir ➢ Optionnels : defaultexcludes, includes, excludes, followsymlinks
Opérations sur le système de fichiers (6) ➢ Exécution de fichiers ➢ Fichiers.class ➢ Section ➢ Fichiers binaires ➢ Section ➢ Exemple :
Chaînage de builds ➢ Il est possible de modulariser un build en plusieurs plus petits ➢ Évite l'aspect monolithique d'un seul build ➢ ➢ Par défaut les property sont héritées par les sous build ➢ L'attribut inheritAll=''false'' évite ce comportement
Méta-caractères ➢ Ant accepte les wildcards ➢ Même sémantique que UNIX ➢ Caractères * et ? ➢ Exemple :
Conclusion ➢ Outil très puissant ➢ S'affranchit des plateformes comme Java ➢ Utilisé avec Java Standard et Java J2EE ➢ Intégré dans tous les IDE du marché ➢ Utilisé dans les approches Xtrem Programming et MDA
Ressources ➢ Web ➢ Le site d'apache : ➢ Livres ➢ « ANT : The Definitive Guide » auteurs :Jesse Tilly, Eric M. Burke éditeur : O'Reilly ➢ « Java Development With Ant »auteurs : Eric Hatcher, Steve Loughranéditeur : Manning