« Le format JAR | Page d'accueil | Log4j: Logging pour Java »

06/08/2008

Notes à propos d'ANT

ant_logo_large.gifANT est un utilitaire JAVA qui permet d'effectuer un certain nombre de tâches relatives à des projets JAVA:
- Compiler des classes JAVA
- Créer des archives jar, war, zip..
- manipuler des fichiers, dossiers (création, suppression..)
- ..

ANT se lance avec la commande 'ant' sous DOS (Windows), ex:
'ant nom_de_cible'

L'exéction d'ANT dépend d'un fichier de configuration xml, 'build.xml'.
Après avoir installé ANT (cf note sur l'installation de Ant), il faut donc créer et renseigner le fichier 'build.xml'.

L'élément racine est 'project'. Il rassemble un ensemble de tâches à effectuer, les 'target'. Il peut être accompagné des attributs:
- name: pour donner un nom au projet ANT
- basedir: pour renseigner le point de départ des chemins du projet
- default: pour préciser un élément cible (target) par défaut, qui sera utlisé si aucun élément cible n'est précisé.

L'élément 'property' permet de déclarer des variables qui seront utilisées dans le projet. Ses attributs usuels sont:
- name: nom de la variable
- value: valeur de la variable

'target' contient les tâches (Tasks) à effectuer. C'est le coeur des opérations ANT. Ses principaux attributs sont:
- name: le nom de la cible
- depends: précise si cette tâche dépend d'une autre tâche qui doit déjà être effectuée
- conditions: if, unless

Les 'Tasks' sont des tâches réalisables par ANT: compilation, manipulation de fichier ou répertoire, création d'archive..
Une liste des tâches et de leurs attributs est disponible dans la document d'ANT: manuel > 'Overview of Ant Tasks'
Quelques tâches courantes:
- delete: effacer un fichier ou un répertoire
- mkdir: créer un répertoire
- javac: compiler (voir la doc pour les options)
- jar: créer une archive au format jar
- war: créer une archive war (Web ARchive)
- java: exécuter du code JAVA ou un JAR, avec la machine virtuelle JAVA

Pour spécifier des librairies à l'aide de 'classpath', il existe principalement deux manières de faire:
- par éléments 'nested', ex:
<javac ...>
<classpath>
<pathelement location="..."/>
<pathelement path=""/>
<fileset dir="lib">
<include name=""**/*.jar"/>
</fileset>
</classpath>
</javac>
- par réference, ex:
<!-- On définit la ressource -->
<path id="ressources.lib">
<pathelement location='...'/>
<pathelement path=""/>
</path>
<!-- on appelle la référence pour lancer une tâche -->
<target ... >
<javac ... classpathref="ressources.lib">
</target>

ou
<target ... >
<javac ... >
<classpath refid="ressources.lib"/>
</javac>
</target>




Exemple complet de fichier 'build.xml':
<?xml version="1.0" encoding="iso-8859-1"?>

<project name="strutsStart" basedir="." default="compile">
<!-- Chemin du serveur (Tomcat) et du jre, pour la définition du classpath -->
<property name="tomcat.dir" value="C:/tomcat4.1"/>
<property name="tomcat.lib.dir" value="${tomcat.dir}/common/lib"/>
<property name="jdk.dir" value="C:/j2sdk1.4.2_17"/> 
<property name="jdk.lib.dir" value="${jdk.dir}/jre/lib"/>

<!-- chemins des répertoires de l'application -->
<property name="webinf.dir" value="WEB-INF"/>
<property name="src.dir" value="${webinf.dir}/sources"/>
<property name="classes.dir" value="${webinf.dir}/classes"/>

<!-- Classpath avec référence pour la compilation (javac) -->
<path id="classpath">
<pathelement location="${tomcat.lib.dir}/servlet.jar"/>
<pathelement location="${jdk.lib.dir}/rt.jar"/>
<fileset dir="${webinf.dir}/lib"/>
</path>

<!-- Tâche d'initialisation: création du répertoire contenant les classes -->
<target name="prepare">
<mkdir dir="${classes.dir}"/>
</target>

<!-- Tâche de compilation des sources -->
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>
</project>



Référence:
- "Using Ant" dans le manuel apache-ant

Auteur: Euan MATEO

Commentaires

fan

Ecrit par : driss | 06/08/2008

Ecrire un commentaire