Développons en Java avec Eclipse13/07/2003
9. Ant et Eclipse
9.1. Structure du
projet
9.2. Création du fichier
build.xml
9.3. Exécuter Ant
9.4. Les paramètres
9.5. Résolution des
problèmes
9.5.1. Utilisation de
caractères accentués
9.5.2. Impossible de
lancer la tache javadoc
9.5.3. Impossible
d'utilise la tâche junit
9.6. Un exemple
complet
Ant est un projet du groupe Apache-Jakarta. Son but est de
fournir un outil écrit en java pour permettre la
construction d'applications (compilation, exécution de
taches post et pré compilation ... ). Ces processus de
construction d'applications sont très importants car ils
permettent d'automatiser des opérations répétitives tout au
long du cycle de vie de l'application (développement,
tests, recettes, mises en production ... ). Le site
officiel de ant est
http://ant.apache.org/
Ant pourrait être comparé au célèbre outil make sous Unix..
Il a été développé pour fournir un outil de
construction< indépendant de toute plate-forme.
Il repose sur un fichier de configuration XML qui décrit
les différentes tâches qui devront être exécutées par
l'outil. Ant fournit un certain nombre de tâches courantes
qui sont codées sous forme d'objets développés en java.
Le fichier de configuration contient un ensemble de cible
(target). Chaque cible contient une ou plusieurs tâches.
Chaque cible peut avoir une dépendance envers une ou
plusieurs autres cibles pour pouvoir être éxécutée.
Pour utiliser Ant, il faut organiser différemment la
structure du projet si celui-ci utilise la structure par
défaut d'un projet Java. Par défaut, les fichiers sources
.java et leurs homologues compilés .class sont dans le même
répertoire à la racine du projet.
Il faut mettre les sources dans un répertoire et les
fichiers .class dans un autre. Ce changement peut être fait
dans l'onglet source des propriétés du projet.
Cliquer sur le bouton "Add Folder".
Cliquer sur le bouton "Create New Folder".
Il faut saisir le nom du répertoire qui va contenir les
sources (par exemple src) et cliquer sur "OK".
Cliquer sur "OK".
En cliquant sur "Yes", Eclipse va automatiquement créer un
répertoire bin qui va contenir le résultat des compilations
des sources.
Cliquer sur "OK".
Cliquer sur "Yes".
Il faut ensuite déplacer les fichiers .java existant dans
le répertoire src en effectuant un copier/coller dans la
vue "Navigateur".
Il faut ensuite créer un répertoire build contenant deux
sous dossiers : lib et doc. Ces dossiers vont contenir
respectivement les fichiers de distribution générés (.jar,
.war, .ear selon le type d'application) et la documentation
des classes au format javadoc.
9.2. Création du fichier
build.xml
Les ordres de générations sont fournis à Ant sous la forme
d'un fichier au format xml nommé build.xml. Il faut créer
ce nouveau fichier à la racine du projet.
Le fichier est automatiquement reconnu comme étant un
fichier de configuration pour Ant : une icône particulière
contenant une fourmi est associée au fichier.
Il suffit ensuite d'éditer le fichier pour insérer les
paramètres d'exécution.
<?xml version="1.0"?>
<project name="TestAnt1" default="bonjour">
<target name="bonjour">
<echo message="Premier test avec Ant!"/>
</target>
</project>
Un éditeur particulier est dédié à l'édition du fichier
build.xml de Ant. Il propose notamment un achèvement du
code pour les tags en utilisant Ctrl + espace.
La vue structure affiche l'arborescence du fichier.
Une fois le contneu du fichier saisi, il suffit de
l'enregistrer.
Pour exécuter Ant avec un fichier build.xml, il suffit dans
la vue "Navigateur" ou "Packages" de sélectionner ce
fichier build.xml et d'utiliser l'option "Exécuter Ant" du
menu contextuel.
Une boite de dialogue s'ouvre. Elle permet de modifier
quelques paramètres externes à Ant et de lancer
l'exécution.
Par défaut, la tâche définie par défaut dans le fichier
build.xml est sélectionnée.
Pour lancer l'exécution, il suffit de cliquer sur le bouton
"Exécuter".
Le résultat de l'exécution s'affiche dans la vue "Console"
Buildfile: I:\eclipse 2.1\workspace\test_junit\build.xml
bonjour:
[echo] Premier test avec Ant!
BUILD SUCCESSFUL
Total time: 401 milliseconds
Dans les préférences, il est possible de préciser des
paramètres par défaut utilisés lors de l'édition d'un
fichier ant ou de son exécution.
9.5. Résolution des
problèmes
Plusieurs problèmes peuvent survenir lors de l'utilisation
de Ant. Voici une solution pour quelques uns d'entre eux.
9.5.1. Utilisation de
caractères accentués
Il faut ajouter l'attribut encoding avec le jeux de
caractères utilisés dans le prologue du fichier build.xml.
<?xml version="1.0" encoding="ISO-8859-1" ?>
9.5.2. Impossible de
lancer la tache javadoc
Buildfile: I:\eclipse 2.1\workspace\test_junit\build.xml
init:
[echo] Generation numero : 7 du July 2 2003
compil:
doc:
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] BUILD FAILED: file:I:/eclipse 2.1/workspace/test_junit/build.xml:37:
Javadoc failed: java.io.IOException: CreateProcess: javadoc.exe -d "I:\eclipse
2.1\workspace\test_junit\build\doc" -use -package -classpath "I:\eclipse 2.1\s
tartup.jar;I:\eclipse 2.1\workspace\test_junit\junit.jar" -version
-author "I:\eclipse 2.1\workspace\test_junit\src\MaClasse.java" "I:\eclipse
2.1\workspace\test_junit\src\MaClasse2.java" error=2
Total time: 681 milliseconds
Il faut vérifier la présence de l'outil dans les
répertoires désignés par la variable d'environnement PATH
du système d'exploitation. Dans le cas de javadoc sous
Windows, il faut s'assurer que %JAVA_HOME%\bin soit insérer
dans la variable PATH. Si cette dernière doit être
modifiée, il faut arrêter et relancer Eclipse après la
modification pour que celle ci soit prise en compte.
9.5.3. Impossible
d'utilise la tâche junit
Buildfile: I:\eclipse 2.1\workspace\test_junit\build.xml
init:
[echo] Generation numero : 13 du July 2 2003
compil:
test:
[junit] BUILD FAILED: file:I:/eclipse 2.1/workspace/test_junit/build.xml:62:
Could not create task or type of type: junit.
Ant could not find the task or a class this task relies upon.
Dans les préférences, il faut rajouter le fichier junit.jar
dans l'onglet "Classpath" de l'arborescence "Ant/Runtime"
<?xml version="1.0" encoding="ISO-8859-1" ?>
<project name="TestAnt1" default="all">
<description>
Génération de l'application
</description>
<property name="bin" location="bin"/>
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="doc" location="${build}/doc"/>
<property name="lib" location="${build}/lib"/>
<property name="junit_path" value="junit.jar"/>
<target name="init" description="Initialisation">
<tstamp/>
<buildnumber file="numerobuild.txt" />
<echo message="Generation numero : ${build.number} du ${TODAY}"/>
</target>
<target name="compil" depends="init" description="Compilation">
<javac srcdir="${src}" destdir="${bin}">
<classpath>
<pathelement path="${java.class.path}"/>
<pathelement location="${junit_path}"/>
</classpath>
</javac>
</target>
<target name="all" depends="init, compil, test, doc" description="Generation complete">
<echo message="Generation complete."/>
</target>
<target name="doc" depends="compil" description="Generation de la documentation">
<javadoc destdir="${doc}" author="true" version="true" use="true" package="true">
<fileset dir = "${src}">
<include name="**/*.java"/>
<exclude name="**/*Test*"/>
</fileset>
<classpath>
<pathelement path="${java.class.path}"/>
<pathelement location="${junit_path}"/>
</classpath>
</javadoc>
</target>
<target name="test" depends="compil" description="Executer les tests avec JUnit">
<junit fork="yes" haltonerror="true" printsummary="on">
<formatter type="plain" usefile="false" />
<test name="ExecuterLesTests"/>
<classpath>
<pathelement location="${bin}"/>
<pathelement location="${junit_path}"/>
</classpath>
</junit>
</target>
</project>
Buildfile: I:\eclipse 2.1\workspace\test_junit\build.xml
init:
[echo] Generation numero : 16 du July 2 2003
compil:
test:
[junit] Running ExecuterLesTests
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0,02 sec
[junit] Testsuite: ExecuterLesTests
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0,02 sec
[junit]
[junit] Testcase: testCalculer took 0,01 sec
[junit] Testcase: testCalculer took 0 sec
[junit] Testcase: testSommer took 0 sec
doc:
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Loading source file I:\eclipse 2.1\workspace\test_junit\src\MaClasse.java...
[javadoc] Loading source file I:\eclipse 2.1\workspace\test_junit\src\MaClasse2.java...
[javadoc] Constructing Javadoc information...
[javadoc] Standard Doclet version 1.4.1
[javadoc]
[javadoc] Building tree for all the packages and classes...
[javadoc] Building index for all the packages and classes...
[javadoc] Building index for all classes...
all:
[echo] Generation complete.
BUILD SUCCESSFUL
Total time: 4 seconds
Copyright (C) 1999-2003 Jean Michel DOUDOUX
|