|
Ant - L'automatisation des tâches du programmeur
8.3.Tâches
Voici une brève liste des
commandes les plus généralement utilisées.
8.3.1.copy
Permet de copier plusieurs fichiers
dans un répertoire. Les fichiers du répertoire source
ne sont copiés que s’ils sont plus récents que
ceux du répertoire de destination ou lorsqu’ils
n’existent pas déjà dans le répertoire de
destination. Cependant, les fichiers plus récents peuvent
toujours être écrasés par overwrite.
Attribut
|
Description
|
file
|
Le fichier à copier, au cas
où aucun fileset n’est
défini, file est un attribut obligatoire.
|
tofile
|
Fichier de destination, est
utilisé si l’attribut file est défini
|
todir
|
Répertoire de destination.
A spécifier lors de la définition de l’attribut
file ou d’un jeu de fichiers
|
overwrite
|
Défini à yes, cet
attribut permet d’écraser les fichiers récents.
La valeur par défaut « no » protège
les fichiers cible les plus récents.
|
8.3.2.delete
La tâche delete permet de
supprimer plusieurs fichiers ou répertoires. Des jeux de
fichiers peuvent être spécifiés à l’aide
des includes, excludes,
etc, … ou encore dans un
élément fileset
emboîté.
Attribut
|
Description
|
file
|
Supprimer le fichier indiqué.
L’un ou l’autre des attributs file
ou dir doit être déclaré.
|
dir
|
Supprime le répertoire
indiqué et, récursivement, tous ses
sous-répertoires. Les répertoires vides ne sont pas
supprimés par défaut. L’un des deux attributs
file ou dir doit être nécessairement
spécifié.
|
quiet
|
True
entraîne la suppression des messages d’erreur, lorsque
des fichiers/répertoires n’existent pas. False
(valeur par défaut) affiche les messages d’erreur.
|
On peut utiliser le marqueur interne
« fileset ».
La section Jeux de fichiers décrit les spécifications
d’un ensemble de fichiers, qui peuvent être spécifiés
dans un marqueur interne.
Exemple :
Le deuxième delete
de l’exemple suivant efface le répertoire build.
<target
name="clean">
<delete
file="/lib/chess.jar"
/>
<delete
dir="build"
/>
</target>
Tous les fichiers avec l’extension
.class sont supprimés de l’arborescence à partir
du répertoire « sub/tmp » :
<delete>
<fileset
dir="sub/tmp"
includes="**/*.class"
/>
</delete>
8.3.3.echo
Affiche un texte arbitraire dans la
fenêtre du shell ou dans un fichier.
Attribut
|
Description
|
Message
|
Spécifie le message de
sortie. Obligatoire si le message ne se trouve pas dans le corps.
|
File
|
Fichier dans lequel le message
doit être écrit
|
Append
|
Indique si le message doit être
ajouté à la fin du fichier. Si la valeur de cet
attribut est false, le fichier de
destination est écrasé. True
attache le message.
|
Exemples :
L’exemple retourne une simple
information :
<echo
message="Statut :
tous les fichier *.lib ont été créés avec
succès. " />
Une chaîne plus longue et une
ligne vide sont retournées ici :
<echo>
Informaton
de statut : les 42 fichiers *.lib ont été créés
avec succès et ont été copées dans le
répertoire de production.
</echo>
Le dernier exemple qui suit ajoute
une information de log à un fichier log.txt existant, et
utilise la propriété DSTAMP produite pas
l’intermédiaire de TSTAMP :
<echo
file="log.txt"
append="true"
message="LOG:
conversion réussie le ${DSTAMP}."/>
8.3.4.jar
Permet la création d’une
archive jar.
Les fichiers peuvent être
spécifiés à l’aide de fileset
et aussi comme éléments imbriqués dans l’élément
jar. On peut aussi spécifier includes,
excludes, etc. comme attributs de
jar pour une définition plus
compacte.
Attribut
|
Description
|
Jarfile
|
Nom du fichier jar à créer.
|
Basedir
|
Répertoire source,à
partir duquel les fichiers à archiver dans le fichier jar
doivent être lus.
|
Compress
|
Compress
est par défaut true,
autrement dit, le fichier est compressé. False
empêche la compression.
|
Filesonly
|
Avec true,
seuls les fichiers sont archivés. Cependant le paramètre
par défaut est false, car
on a besoin aussi en règle générale
d’archiver aussi les répertoires.
|
Includes
|
Liste de fichiers séparés
par des virgules, qui doivent être utilisés.
|
Excludes
|
Liste de fichiers séparés
par des virgules, qui ne doivent pas être utilisés.
|
Manifest
|
Permet la spécification du
fichier manifest. Ce fichier
permet de définir la classe contenant la fonciton
main, entre autre.
|
Update
|
Dans le cas où le fichier
existe déjà, spécifie si ce fichier doit être
remplacé.
|
Exemple :
L’exemple suivant suppose que
tous les fichiers source de la tâche javac
dans build ont été
créés. Ce répertoire source est rassemblé
dans une archive jar et écrit dans lib :
<jar
jarfile="${lib.dir}/ejbs.jar"
basedir="${build.dir}"/>
Dans l’exemple suivant, sont
pris en compte dans le marqueur jar tous les fichiers « class »,
et les fichiers dont le nom contient la chaîne test, sont
explicitement exclus.
<jar
jarfile="lib/ejbs.jar">
<fileset
dir="${build.dir}/classes"
excludes="**/*test*"/>
</jar>
8.3.5.java
Exécute une classe Java.
Cette tâche comporte un
attribut fork permettant de démarrer
une machine virtuelle Java, de sorte que le programme à la fin
de l’exécution du code Java met un terme à la
machine virtuelle VM avec System.exit(0),
mais non à la machine virtuelle du build.
Attribut
|
Description
|
Classname
|
Le nom de la classe qui doit être
démarrée. On doit indiquer comme paramètre,
soit classname, soit jar.
|
Jar
|
Par opposition à classname,
jar permet de spécifier ici un fichier jar. L’attribut
jar doit posséder une entrée Main-Class
dans le fichier manifest, et fork
doit être défini sur true.
|
Classpath
|
Le chemin de classe. En présence
de plusieurs chemins, il est recommandé d’utiliser
class-path comme élément
interne de Java (voir l’exemple ci-dessous).
|
Fork
|
Autorise le démarrage d’une
classe dans une autre machine virtuelle Java. Désactivé
par défaut.
|
Jvm
|
Dans le cas où fork
est défini, jvm donne
l’ordre permettant de démarrer la machine virtuelle.
|
Jvmarg (élément
imbriqué)
|
Dans le cas où fork
est défini, les arguments de la classe dans la nouvelle
machine virtuelle sont définis ici.
|
Dir
|
Si fork
est défini, permet de spécifier le répertoire
pour l’exécution de la nouvelle machine virtuelle.
|
Output
|
Les sorties sont écrites
dans un fichier.
|
Marqueurs internes
Arg
et jvmarg peuvent être
utilisés dans Java comme arguments de la ligne de commande.
Par exemple :
<arg
line="arg1 arg2 arg3"/>
Exemples
Cet exemple exécute une classe
Java en lui passant des arguments avec l’élément
arg. Une ligne est passée
comme argument avec line. Les noms de fichiers, contenant des
espaces, doivent être déclarés avec l’attribut
value.
<java
classname="foo.bar.Main">
<arg
line="-verbose ${src.dir}/*.java"/>
</java>
L’exemple suivant appelle une
classe qui doit être exécutée dans une nouvelle
machine virtuelle. Le chemin de classe est défini comme
élément interne classpath
de Java et contient deux références aux fichiers jar
et à un élément de chemin, pointant vers un
chemin de classe prédéfini
<java
classname="org.labo.computer.Main"
fork="yes">
<classpath>
<pathelement
location="lib/${jarname}"/>
<pathelement
location="ext/tools.jar"/>
<pathelement
path="${classpath}"/>
</classpath>
</java>
8.3.6.javac
Compile une arborescence de
répertoires qui contient le code source Java.
Cette tâche permet de parcourir
les répertoires de manière récursive et de
compiler tous les fichiers Java n’ayant pas de fichier de
classe correspondant ou dont le fichier de classe est plus ancien
qu’ils ne le sont.
Attribut
|
description
|
Srcdir
|
Répertoire où se
trouvent les fichiers Java. Attribut obligatoire, lorsque aucun
élément src n’est
spécifié dans javac.
|
Destdir
|
Répertoire dans lequel les
fichiers class sont stockés.
|
Includes
|
Liste de fichiers ou de modèles,
séparés par des virgules, qui peuvent être
utilisés.
|
Excludes
|
Liste de fichiers ou de modèles
séparés par des virgules, qui ne doivent pas être
utilisés.
|
Classpath
|
Le chemin de classe à
utiliser
|
Bootclasspath
|
Chemin des classes nécessaires
au lancement de la machine virtuelle.
|
Encoding
|
Encodage des fichiers source.
|
Debug
|
Indique au compilateur si la
compilation doit inclure les informations de débogage. La
valeur par défaut est off ; autrement dit,
l’information de débogage n’est pas utilisée.
|
Optimize
|
Indique si le code doit être
optimisé. La valeur par défaut est off, ce signifie
sans optimisation.
|
Target
|
Permet de spécifier la
version Java des fichier de classe (par exemple 1.2 ou 1.4)
|
Fork
|
Yes
permet d’exécuter javac
dans une autre machine virutelle.
La valeur par défaut est no.
|
Source
|
Assure la compatibilité des
sources avec une version du jdk.
Peut prendre les valeurs 1.3 ou 1.4 et ne peut être utilisé
qu’avec des compilateurs Sun
supèrieure à 1.3.
|
Marqueurs internes
Les fichiers source peuvent être
spécifiés à l’aide de fileset,
includes, excludes,
etc (voir la section Jeux de
fichier) utilisés comme élément imbriqués
dans la tâche javac. Comme
solution alternative, on peut spécifier includes,
excludes, etc…
comme attributs de la tâche javac
pour des définitions de fichiers plus compactes.
Par ailleurs, srcdir,
classpath, bootclasspath
et extdir peuvent être
utilisés comme éléments internes de javac et
comme structures de chemins.
Exemples :
Le premier exemple compile toutes les
sources du répertoire actuel et écrit l’ensemble
de l’arborescence avec tous les fichiers de classe dans
WEB-INF/classes.
<javac
srcdir="."
Destdir="WEB-INF/classes"
/>
Dans le second exemple, l’option
verbose est active et le texte
source de même que includes et
excludes sont spécifiés
comme marqueurs internes :
<javac
destdir="${build.dir}"
verbose="true">
<src
path="${brain}"/>
<src
path="${graphics}"/>
<include
name="${package1}/**"/>
<exclude
name="${package1}/*test*"/>
</javac>
8.3.7.javadoc
Permet la création d’une
documentation javadoc.
La documentation de l’API est
générée à partir des sources Java qui
sont recherchées dans un ou plusieurs répertoires que
l’on renseignera dans un attribut « sourcepath »
ou un élément imbriqué.
Attribut
|
Description
|
Sourcepath
|
Spécifie l’emplacement
des sources. L’un des attributs sourcepath
ou sourcepathref doit être
défini. Sourcepath n’est
pas un attribut requis dans la mesure où le marqueur
emboîté <sourcepath>
est spécifié.
|
Destdir
|
Définit le répertoire
cible dans lequel seront écrits les fichiers javadoc.
Attribut obligatoire.
|
Sourcefiles
|
On peut spécifier
directement le code source à l’aide d’une liste
de fichiers source, séparés par des virgules. L’un
des attributs sourcefiles ou
packagenames doit être
défini. N’est pas obligatoire dans le cas où
les marqueurs <source> ou <package> sont spécifiés.
|
Exemple :
Cet exemple génère une
documentation dans le répertoire javadoc. Private
est une option javadoc qui permet d’englober dans la
documentation les classes et les champs privés, ainsi que les
méthodes privées des classes.
A l’aide des attributs
packagenames et excludepackagenames,
des classes peuvent être inclues ou exclues
<javadoc
packagenames="org.labosun.project"
sourcepath="."
destdir="."
private="true"
/>
8.3.8.taskdef
« taskdef »
sert à définir une nouvelle tâche dans le projet
actuel. « taskdef »
est appelée soit avec les attributs « name »
et « classname »,
soit avec uniquement « name »
et « classname »,
soit avec uniquement l’attribut « file »
ou l’attribut « resource ».
Attribut
|
Description
|
Name
|
Le nom de l’élément
XML par lequel la tâche est invoquée. Attribut
obligatoire, si file ou resource
ne sont pas spécifiés.
|
Classname
|
Nom de la classe qui implémente
la nouvelle tâche. Attribut obligatoire si file
ou resource ne sont pas
spécifiés.
|
Resource
|
Nom d’un fichier de
propriétés comportant des paires nom/classe.
|
Classpath
|
CLASSPATH dans lequel se trouvent
les classes Java implémentant les tâches.
|
Exemple:
<taskdef
name="myGenerator"
classname="org.labosun.anttask.generator"
/>
| |