This is an old revision of the document!
Table of Contents
Introduction à Ant
Qu’est ce que ant ?
extrait du TD ci-dessus.
Ant est un projet du groupe Apache-Jakarta. Il permet l’automatisation des différentes tâches d’élaboration
d’un projet (compilation, exécution de tâches de pré et post-compilation, création d’archives jar, …). Il
est au java ce que make
est au C ou au C++. L’objectif principal de ant est d’accélérer et de faciliter les
tâches de compilation, distribution et déploiement des applications java.
La configuration de ant repose sur un fichier XML qui décrit les différentes tâches qui devront être exécutées par l’outil. Il porte par convention le nom de build.xml. Le fichier de configuration contient un ensemble de cibles (appellées target). Chaque cible contient une ou plusieurs tâches à réaliser et peut avoir une dépendance avec une ou plusieurs autres cibles.
Etudions un exemple pour clarifier les choses :
On veut automatiser la création d’une archive jar contenant les classes compilées d’un projet et sa
javadoc. Il faut donc créer une tâche dédiée à la création et que l’on peut par exemple appeler distribution
.
Pour générer l’archive, il faut avoir compilé le projet et avoir généré sa javadoc. Cela correspond à deux autres tâches, compile
et doc
, qui seront totalement indépendantes de la première.
La tâche distribution
sera dépendante des tâches compile
et javadoc
, ce qui veut dire que
compile
et javadoc
seront executées avant distribution
.
Cet exemple illustre un des concepts essentiels de la gestion de projet avec ant : il faut, comme lors de la conception orientée objet d’un projet, extraire les étapes atomiques de production du projet et tisser les liens logiques qui existent entre elles.
Premier fichier build.xml
Prenez l'exemple suivant extrait de xxx.
Décompressez l'archive.
Ce projet est composé de deux classes : ….
Ouvrez le fichier build.xml
à la racine du répertoire exemple/ avec un éditeur “simple” (qui
n’interprète pas le XML tels que emacs, vi, kate, …).
Analysons ce fichier un peu plus en détails :
- On peut remarquer qu’il existe deux types de champs dans un fichier ant : des propriétés (
property
), qui correspondent à des variables locales au fichier, et des cibles (target
) qui sont des tâches exécutables par ant. Il est possible d’accéder à une propriété que l’on a définie grâce à la syntaxe${nomDeLaPropriete}
. Chaque cible est exécutable en ligne de commande grâce à :
ant nomDeLaCible.
<project name=“example” default=“compile” basedir=“.”>
Cette ligne définit notre projet en lui donnant un nom, une tâche cible par défaut et un répertoire de base relatif à la position du fichier build.xml.
<property name=“sources” value=“src”/>
définit une variable sources qui pointe vers le répertoire contenant les sources à compiler. Cette
variable est accessible dans le reste du fichier avec ${sources}
.
<target name=“initialization”>
définit une cible qui a pour nom “initialization” et qui crée un répertoire nommé classes
.
<target name=“compile” depends=“initialization”>
définit une cible qui a pour nom compile
et qui est dépendante de la cible initialization
,
c’est à dire que l’exécution de la cible compile
provoque l’exécution préalable de la cible
initialization
. Après l’initialisation, les sources contenues dans le répertoire src
sont
compilées et les fichiers .class
sont stockés dans le répertoire classes
.
Exercice 1 : tâches de base
- Dans une console, tapez
ant initialization
dans le répertoire qui contient le build. Observez maintenant le contenu du répertoire. - Supprimez le répertoire
classes
puis exécutez la commandeant
sans argument. Observez le contenu du répertoire courant puis du répertoireclasses
. - En utilisant la commande
ant delete
, écrivez une cible “clean” qui supprime le répertoireclasses
. (vous pouvez voir à la fin du TD la syntaxe des principales tâches ant, ou bien regarder directement sur http://ant.apache.org/manual/(delete)
. - Modifiez maintenant le fichier
build.xml
de façon à ce que la cibleclean
soit exécutée à chaque appel de la ciblecompile
1). Re-testez le tout. Attention, à la fin de la compilation, le répertoireclasses
doit évidemment exister. - En utilisant la commande
ant java
, écrivez une ciblerun
qui compile le projet et qui exécutejug.util.Demo
. Modifiez également l’entête du fichierbuild.xml
de façon à ce que cette cible soit exécutée par défaut. - Ajouter une cible qui produit le .jar (voir http://skebir.developpez.com/tutoriels/java/ant/#LIII-C) puis une autre qui l'exécute.
Exercice 2 : Ant et JUnit
- Modifiez maintenant le fichier
build.xml
de façon à ce que la compilation prenne également en compte les tests. Re-testez le tout.
Autres
- Regarder la génération de la javadoc
http://skebir.developpez.com/tutoriels/java/ant/ http://skebir.developpez.com/tutoriels/java/ant/#LIII-C