Apache ANT

16
Apache ANT L’outil de fabrication universel

description

Présentation de l'outil de fabrication ANT.

Transcript of Apache ANT

Page 1: Apache ANT

Apache ANTL’outil de fabrication universel

Page 2: Apache ANT

2

Ant ?Ant ?

• Outil extensible de construction (build) d’applications

• Descendant de l’outil Make et de son makefile

• Permet d’automatiser la construction d’un projet et les tâches de déploiement– Compilation– Création des fichiers JAR, WAR, EAR, …– Génération de la documentation (Javadoc)– Exécution de séries de tests (unitaires)– Déploiement sur les environnement d’intégration, de production,

…– Etc.

Page 3: Apache ANT

3

Make versus AntMake versus Ant

Make

• Avantages Automatisation de tâches

répétitives et complexes Gestion de dépendances Très répandu dans le monde

C/Unix

• Inconvénients Essentiellement pour les

systèmes de type Unix Pas portable Fortement lié au shell utilisé Exigeant au niveau de la

syntaxe (i.e. espaces)

Ant

Avantages Automatisation de tâches

répétitives et complexes Gestion de dépendances Format XML Java et OpenSource (multi-

plateformes) Extensible

Inconvénients Que va-t-on faire de tous les

makefiles ?

Page 4: Apache ANT

4

Le fichier build.xmlLe fichier build.xml

• C’est le fichier principal qui décrit le déroulement de la construction de l’application

<project name=“tutorialAnt" default="help" basedir="."><property name="base.dir" value="${basedir}" /><property name="src.dir" value="${base.dir}/src" />…<target name="init">

<tstamp /></target>

<target name="help" depends="init">…

</target>…

</project>

Page 5: Apache ANT

5

Concepts AntConcepts Ant

• Un projet (project)– Ensemble de cibles (targets)

• Une propriété (property)– Une constante Ant à initialiser

• Une cible (target)– Un ensemble de tâches (tasks) remplissant un objectif particulier

(exemple : Déploiement, constitué de plusieurs tâches de copies de fichiers, …)

– 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

• Une tâche (task)– La plus petite unité d’exécution Ant (étape)– L’exécution des tâches peut être conditionnelle

Page 6: Apache ANT

6

Projet (Projet (projectproject))

<project basedir="." default="help" name="Nom de votre projet">

[Liste de cibles (targets)]

</project>

• Décrit l’ensemble des étapes de la construction de l’application

• L’attribut default est obligatoire

Page 7: Apache ANT

7

Cible (Cible (targettarget))

<target depends="prepare.check" name="prepare.build" description="Creation des repertoires de distribution" >…[Liste de tâches (tasks)]…

</target>

• Décrit l’ensemble des tâches qui permettent de remplir un objectif

• L’attribut name est obligatoire

• Option if et unless pour conditionner l’exécution des cibles en fonction de la présence ou non de propriétés

Page 8: Apache ANT

8

Tâche (Tâche (tasktask))

• Commande Ant permettant d’effectuer une tâche unitaire

• Exemple– Création de répertoire

<mkdir dir="${build.dir}" />

– Copie de fichiers<copy todir="${dist.lib.dir}"> <fileset refid="librairies.fileset" /></copy>

– Compilation<javac classpathref="librairies.path" debug="${javac.debug}" deprecation="${javac.deprecation}" destdir="${build.class.dir}" optimize="${javac.optimize}" srcdir="${src.dir}" encoding="utf-8"/>

Page 9: Apache ANT

9

Tâches standards Tâches standards (version 1.6)(version 1.6)

AntAntCallAntStructureApply/ExecOnAvailableBasenameBuildNumberBUnzip2BZip2ChecksumChmodConcatConditionCopyCopydirCopyfileCvsCvsChangeLogCVSPassCvsTagDiffDeleteDeltreeDependsetDirname

EarEchoExecFailFilterFixCRLFGenKeyGetGunzipGzipImportInputJarJavaJavacJavadoc/Javadoc2LengthLoadFileLoadPropertiesMailMacroDef

TarTaskdefTempfileTouchTstampTypedefUnjarUntarUnwarUnzipUptodateWaitforWarWhichResourceXmlPropertyXsltZip

ManifestMkdirMoveNiceParallelPatchPathConvertPreSetDefPropertyRecordRenameReplaceRmicSequentialSignJarSleepSqlStyleSubantSync

Page 10: Apache ANT

10

ExtensibilitéExtensibilité

• Ant offre la possibilité de créer des tâches personnalisées

• Une cible est une classe Java héritant de

org.apache.tools.ant.Task

Disponibilité d’un grand nombre de tâches supplémentaires (exemple : tâche check pour Checkstyle)

http://ant.apache.org/external.html

Page 11: Apache ANT

11

Préconisations : Cibles (1/2)Préconisations : Cibles (1/2)

• Cibles externes– 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.

– clean : supprime les répertoires de sortie (build et dist)– install : installe les sources dans l’IDE– check : fait des vérifications sur les sources (checkstyle)– build : compile les sources et créé les JAR, WAR, EAR, …– test : lance les tests (JUnit)– deploy : déploie sur le serveur cible– doc : copie la documentation et génère le Javadoc– main : lance les cibles build et test– all : lance les cibles clean, fetch, build, test, docs, deploy

Page 12: Apache ANT

12

Préconisations : Cibles (2/2)Préconisations : Cibles (2/2)

• Cibles internes– init : initialise les propriétés, les affiche, vérifie leur validité– prepare : crée les répertoires de sortie – compile : compile les sources– jar : génère les JAR, EJB-JAR, WAR, EAR, …– javadoc : génère la javadoc

• Nommage des cibles– Noms en minuscules– Utilisation possible de macro-cibles et micro-cibles– Exemple

• prepare.build• prepare.doc• …

Page 13: Apache ANT

13

Préconisations : PropriétésPréconisations : Propriétés

• Le script Ant s’appuie sur un fichier build.properties qui regroupe l’ensemble des propriétés utilisée dans ce script.

Plus grande souplesse d’écriture des scripts et réutilisation

• 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.

<property file="user_build.properties" />

<property file="build.properties" />

Page 14: Apache ANT

14

Préconisations : ArborescencePréconisations : Arborescence

Page 15: Apache ANT

15

Intégration avec les IDEIntégration avec les IDE

• De nombreux plug-ins sont disponibles pour les principaux environnements de développement du marché– Assistants pour l’écriture du script Ant– Pilotage de l’exécution du script depuis l’environnement de

développement

• Plug-ins disponibles– Eclipse– NetBeans– etc.

• Interface graphique pour ANT : Antelopehttp://antelope.tigris.org

Page 16: Apache ANT

16

le.genie.logiciel 2009