Apache ANT L’outil de fabrication universel
Ant ? <ul><li>Outil extensible de construction (build) d’applications </li></ul><ul><li>Descendant de l’outil  Make  et de...
Make versus Ant <ul><li>Make </li></ul><ul><li>Avantages </li></ul><ul><ul><li>Automatisation de tâches répétitives et com...
Le fichier build.xml <ul><li>C’est le fichier principal qui décrit le déroulement de la construction de l’application </li...
Concepts Ant <ul><li>Un projet ( project ) </li></ul><ul><ul><li>Ensemble de cibles ( targets ) </li></ul></ul><ul><li>Une...
Projet ( project ) <ul><li>< project basedir =&quot; . &quot;  default =&quot; help &quot;  name =&quot; Nom de votre proj...
Cible ( target ) <ul><li>< target   depends= &quot; prepare.check &quot;  name =&quot; prepare.build &quot;  description= ...
Tâche ( task ) <ul><li>Commande Ant permettant d’effectuer une tâche unitaire </li></ul><ul><li>Exemple </li></ul><ul><ul>...
Tâches standards  (version 1.6) <ul><li>Ant </li></ul><ul><li>AntCall </li></ul><ul><li>AntStructure </li></ul><ul><li>App...
Extensibilité <ul><li>Ant offre la possibilité de créer des tâches personnalisées </li></ul><ul><li>Une cible est une clas...
Préconisations : Cibles (1/2) <ul><li>Cibles externes </li></ul><ul><ul><li>help  : Cible par défaut (si on ne précise pas...
Préconisations : Cibles (2/2) <ul><li>Cibles internes </li></ul><ul><ul><li>init  : initialise les propriétés, les affiche...
Préconisations : Propriétés <ul><li>Le script Ant s’appuie sur un fichier  build.properties  qui regroupe l’ensemble des p...
Préconisations : Arborescence
Intégration avec les IDE <ul><li>De nombreux plug-ins sont disponibles pour les principaux environnements de développement...
Questions ? le.genie.logiciel 2009
Upcoming SlideShare
Loading in …5
×

Apache ANT

2,301 views
2,205 views

Published on

Présentation de l'outil de fabrication ANT.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,301
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
71
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apache ANT

  1. 1. Apache ANT L’outil de fabrication universel
  2. 2. Ant ? <ul><li>Outil extensible de construction (build) d’applications </li></ul><ul><li>Descendant de l’outil Make et de son makefile </li></ul><ul><li>Permet d’automatiser la construction d’un projet et les tâches de déploiement </li></ul><ul><ul><li>Compilation </li></ul></ul><ul><ul><li>Création des fichiers JAR, WAR, EAR, … </li></ul></ul><ul><ul><li>Génération de la documentation (Javadoc) </li></ul></ul><ul><ul><li>Exécution de séries de tests (unitaires) </li></ul></ul><ul><ul><li>Déploiement sur les environnement d’intégration, de production, … </li></ul></ul><ul><ul><li>Etc. </li></ul></ul>
  3. 3. Make versus Ant <ul><li>Make </li></ul><ul><li>Avantages </li></ul><ul><ul><li>Automatisation de tâches répétitives et complexes </li></ul></ul><ul><ul><li>Gestion de dépendances </li></ul></ul><ul><ul><li>Très répandu dans le monde C/Unix </li></ul></ul><ul><li>Inconvénients </li></ul><ul><ul><li>Essentiellement pour les systèmes de type Unix </li></ul></ul><ul><ul><li>Pas portable </li></ul></ul><ul><ul><li>Fortement lié au shell utilisé </li></ul></ul><ul><ul><li>Exigeant au niveau de la syntaxe (i.e. espaces) </li></ul></ul><ul><li>Ant </li></ul><ul><li>Avantages </li></ul><ul><ul><li>Automatisation de tâches répétitives et complexes </li></ul></ul><ul><ul><li>Gestion de dépendances </li></ul></ul><ul><ul><li>Format XML </li></ul></ul><ul><ul><li>Java et OpenSource (  multi-plateformes) </li></ul></ul><ul><ul><li>Extensible </li></ul></ul><ul><li>Inconvénients </li></ul><ul><ul><li>Que va-t-on faire de tous les makefiles ? </li></ul></ul>
  4. 4. Le fichier build.xml <ul><li>C’est le fichier principal qui décrit le déroulement de la construction de l’application </li></ul><ul><ul><li>< project name = “tutorialAnt&quot; default = &quot; help &quot; basedir = &quot;.&quot; > </li></ul></ul><ul><ul><ul><li>< property name = &quot;base.dir&quot; value = &quot;${basedir}&quot; /> </li></ul></ul></ul><ul><ul><ul><li>< property name = &quot;src.dir&quot; value = &quot;${base.dir}/src&quot; /> </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li>< target name = &quot;init&quot; > </li></ul></ul></ul><ul><ul><ul><ul><li>< tstamp /> </li></ul></ul></ul></ul><ul><ul><ul><li></ target > </li></ul></ul></ul><ul><ul><ul><li>< target name = &quot;help&quot;   depends = &quot;init&quot; > </li></ul></ul></ul><ul><ul><ul><ul><li>… </li></ul></ul></ul></ul><ul><ul><ul><li></ target > </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><li></ project > </li></ul></ul>
  5. 5. Concepts Ant <ul><li>Un projet ( project ) </li></ul><ul><ul><li>Ensemble de cibles ( targets ) </li></ul></ul><ul><li>Une propriété ( property ) </li></ul><ul><ul><li>Une constante Ant à initialiser </li></ul></ul><ul><li>Une cible ( target ) </li></ul><ul><ul><li>Un ensemble de tâches ( tasks ) remplissant un objectif particulier (exemple : Déploiement, constitué de plusieurs tâches de copies de fichiers, …) </li></ul></ul><ul><ul><li>La cible à exécuter au lancement du build peut être précisée en ligne de commande. Si ce paramètre est omis, c’est la cible par défaut qui sera exécutée </li></ul></ul><ul><li>Une tâche ( task ) </li></ul><ul><ul><li>La plus petite unité d’exécution Ant (étape) </li></ul></ul><ul><ul><li>L’exécution des tâches peut être conditionnelle </li></ul></ul>
  6. 6. Projet ( project ) <ul><li>< project basedir =&quot; . &quot; default =&quot; help &quot; name =&quot; Nom de votre projet &quot;> </li></ul><ul><li>… </li></ul><ul><li>[Liste de cibles ( targets )] </li></ul><ul><li>… </li></ul><ul><li>< /project > </li></ul><ul><li>Décrit l’ensemble des étapes de la construction de l’application </li></ul><ul><li>L’attribut default est obligatoire </li></ul>
  7. 7. Cible ( target ) <ul><li>< target depends= &quot; prepare.check &quot; name =&quot; prepare.build &quot; description= &quot; Creation des repertoires de distribution &quot; > </li></ul><ul><li>… </li></ul><ul><li>[Liste de tâches ( tasks )] </li></ul><ul><li>… </li></ul><ul><li>< /target > </li></ul><ul><li>Décrit l’ensemble des tâches qui permettent de remplir un objectif </li></ul><ul><li>L’attribut name est obligatoire </li></ul><ul><li>Option if et unless pour conditionner l’exécution des cibles en fonction de la présence ou non de propriétés </li></ul>
  8. 8. Tâche ( task ) <ul><li>Commande Ant permettant d’effectuer une tâche unitaire </li></ul><ul><li>Exemple </li></ul><ul><ul><li>Création de répertoire </li></ul></ul><ul><ul><li>< mkdir dir =&quot; ${build.dir} &quot; /> </li></ul></ul><ul><ul><li>Copie de fichiers </li></ul></ul><ul><ul><li>< copy todir =&quot; ${dist.lib.dir} &quot;> </li></ul></ul><ul><ul><li> < fileset refid =&quot; librairies.fileset &quot; /> </li></ul></ul><ul><ul><li></ copy > </li></ul></ul><ul><ul><li>Compilation </li></ul></ul><ul><ul><li>< javac classpathref =&quot; librairies.path &quot; debug =&quot; ${javac.debug} &quot; deprecation =&quot; ${javac.deprecation} &quot; destdir =&quot; ${build.class.dir} &quot; optimize =&quot; ${javac.optimize} &quot; srcdir =&quot; ${src.dir} &quot; encoding =&quot; utf-8 &quot;/> </li></ul></ul>
  9. 9. Tâches standards (version 1.6) <ul><li>Ant </li></ul><ul><li>AntCall </li></ul><ul><li>AntStructure </li></ul><ul><li>Apply/ ExecOn </li></ul><ul><li>Available </li></ul><ul><li>Basename </li></ul><ul><li>BuildNumber </li></ul><ul><li>BUnzip2 </li></ul><ul><li>BZip2 </li></ul><ul><li>Checksum </li></ul><ul><li>Chmod </li></ul><ul><li>Concat </li></ul><ul><li>Condition </li></ul><ul><li>Copy </li></ul><ul><li>Copydir </li></ul><ul><li>Copyfile </li></ul><ul><li>Cvs </li></ul><ul><li>CvsChangeLog </li></ul><ul><li>CVSPass </li></ul><ul><li>CvsTagDiff </li></ul><ul><li>Delete </li></ul><ul><li>Deltree </li></ul><ul><li>Dependset </li></ul><ul><li>Dirname </li></ul>Ear Echo Exec Fail Filter FixCRLF GenKey Get Gunzip Gzip Import Input Jar Java Javac Javadoc/Javadoc2 Length LoadFile LoadProperties Mail MacroDef Tar Taskdef Tempfile Touch Tstamp Typedef Unjar Untar Unwar Unzip Uptodate Waitfor War WhichResource XmlProperty Xslt Zip Manifest Mkdir Move Nice Parallel Patch PathConvert PreSetDef Property Record Rename Replace Rmic Sequential SignJar Sleep Sql Style Subant Sync
  10. 10. Extensibilité <ul><li>Ant offre la possibilité de créer des tâches personnalisées </li></ul><ul><li>Une cible est une classe Java héritant de </li></ul><ul><li>org.apache.tools.ant.Task </li></ul><ul><li> Disponibilité d’un grand nombre de tâches supplémentaires (exemple : tâche check pour Checkstyle) </li></ul><ul><li>http://ant.apache.org/external.html </li></ul>
  11. 11. Préconisations : Cibles (1/2) <ul><li>Cibles externes </li></ul><ul><ul><li>help : Cible par défaut (si on ne précise pas de paramètre au lancement de Ant), Affiche les cibles du projet, leurs dépendances, etc. </li></ul></ul><ul><ul><li>clean : supprime les répertoires de sortie (build et dist) </li></ul></ul><ul><ul><li>install : installe les sources dans l’IDE </li></ul></ul><ul><ul><li>check : fait des vérifications sur les sources (checkstyle) </li></ul></ul><ul><ul><li>build : compile les sources et créé les JAR, WAR, EAR, … </li></ul></ul><ul><ul><li>test : lance les tests (JUnit) </li></ul></ul><ul><ul><li>deploy : déploie sur le serveur cible </li></ul></ul><ul><ul><li>doc : copie la documentation et génère le Javadoc </li></ul></ul><ul><ul><li>main : lance les cibles build et test </li></ul></ul><ul><ul><li>all : lance les cibles clean , fetch , build , test , docs , deploy </li></ul></ul>
  12. 12. Préconisations : Cibles (2/2) <ul><li>Cibles internes </li></ul><ul><ul><li>init : initialise les propriétés, les affiche, vérifie leur validité </li></ul></ul><ul><ul><li>prepare : crée les répertoires de sortie </li></ul></ul><ul><ul><li>compile : compile les sources </li></ul></ul><ul><ul><li>jar : génère les JAR, EJB-JAR, WAR, EAR, … </li></ul></ul><ul><ul><li>javadoc : génère la javadoc </li></ul></ul><ul><li>Nommage des cibles </li></ul><ul><ul><li>Noms en minuscules </li></ul></ul><ul><ul><li>Utilisation possible de macro-cibles et micro-cibles </li></ul></ul><ul><ul><li>Exemple </li></ul></ul><ul><ul><ul><li>prepare.build </li></ul></ul></ul><ul><ul><ul><li>prepare.doc </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul>
  13. 13. Préconisations : Propriétés <ul><li>Le script Ant s’appuie sur un fichier build.properties qui regroupe l’ensemble des propriétés utilisée dans ce script. </li></ul><ul><li> Plus grande souplesse d’écriture des scripts et réutilisation </li></ul><ul><li>Un deuxième fichier : user_build.properties peut compléter (ou redéfinir) les propriétés spécifiques à l’environnement d’un utilisateur. Ce fichier n’est pas géré en configuration. </li></ul><ul><li>< property file =&quot; user_build.properties &quot; /> </li></ul><ul><li>< property file =&quot; build.properties &quot; /> </li></ul>
  14. 14. Préconisations : Arborescence
  15. 15. Intégration avec les IDE <ul><li>De nombreux plug-ins sont disponibles pour les principaux environnements de développement du marché </li></ul><ul><ul><li>Assistants pour l’écriture du script Ant </li></ul></ul><ul><ul><li>Pilotage de l’exécution du script depuis l’environnement de développement </li></ul></ul><ul><li>Plug-ins disponibles </li></ul><ul><ul><li>Eclipse </li></ul></ul><ul><ul><li>NetBeans </li></ul></ul><ul><ul><li>etc. </li></ul></ul><ul><li>Interface graphique pour ANT : Antelope </li></ul><ul><li>http://antelope.tigris.org </li></ul>
  16. 16. Questions ? le.genie.logiciel 2009

×