9. Le refactoring 11. JUnit et Eclipse Imprimer Sommaire Consulter avec table des matières Développons en Java avec Eclipse   v 0.80  
Copyright (C) 2003-2007 Jean-Michel DOUDOUX   

 

10. Ant et Eclipse

 

chapitre 1 0

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 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, recette, mise en production ... ).

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 car écrit avec et pour Java. 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 cibles (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 exécutée.

Pour obtenir plus de détails sur l'utilisation de Ant, il est possible de consulter la documentation de la version courante à l'url suivante : http://jakarta.apache.org/ant/manual/index.html

 

10.1. Structure du projet

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.

Cliquez sur le bouton "Ajouter un dossier ".

+

Cliquez sur le bouton "Créer un dossier ".

Il faut saisir le nom du répertoire qui va contenir les sources (par exemple src) et cliquer sur le bouton "OK".

Cliquez sur le bouton "OK".

En cliquant sur "Oui", Eclipse va automatiquement créer un répertoire bin qui va contenir le résultat des compilations des sources.

Cliquez sur le bouton "OK".

Cliquez sur le bouton "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.

 

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

Exemple : afficher un message

<?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 la combinaison de touches Ctrl + espace.

La vue structure affiche l'arborescence du fichier.

Une fois le contenu du fichier saisi, il suffit de l'enregistrer.

Les erreurs dans le fichier de configuration sont signalées dans l'éditeur avec possibilité d'obtenir une bulle d'aide précisant le problème en laissant le curseur de la souris sur la petite icônes rouge avec une croix blanche.

A la sauvegarde du fichier de configuration, les erreurs persistantes sont signalées dans la vue « Erreurs »

L'éditeur de fichier de configuration de Ant propose une complétion de code avec une bulle d'aide qui permet de fournir des informations sur l'entité sélectionnée.

L'éditeur propose des modèles de code utilisable via la combinaison de touches Ctrl+espace.

Par exemple, à la création d'un fichier build.xml vide, il est possible de demander l'insertion d'un modèle contenant deux cibles. Une bulle d'aide fournit un aperçu du code qui sera inséré.

Il existe aussi des modèles pour de nombreuses tâches Ant.

L'éditeur de fichier de configuration d'Ant peut formater le code source XML du fichier de configuration en sélectionnant l'option « Formater » du menu contextuel ou en utilisant la combinaison de touches Ctrl+Maj+F.

L‘exécution de Ant se fait par défaut dans une machine virtuelle dédiée et non plus dans la machine virtuelle dans laquelle Eclipse s'exécute.

 

10.3. Exécuter Ant

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"

Exemple :

Buildfile: I:\eclipse\workspace\test_junit\build.xml

bonjour:
        [echo] Premier test avec Ant!
BUILD SUCCESSFUL
Total time: 401 milliseconds

 

10.4. Les paramètres

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.

 

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

 

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

Exemple :

<?xml version="1.0" encoding="ISO-8859-1" ?>

 

10.5.2. Impossible de lancer la tache javadoc

 

Exemple :

Buildfile: I:\eclipse\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/workspace/test_junit/build.xml:37: 
     Javadoc failed: java.io.IOException: CreateProcess: javadoc.exe -d "I:\eclipse 
    \workspace\test_junit\build\doc" -use -package -classpath "I:\eclipse\s
     tartup.jar;I:\eclipse\workspace\test_junit\junit.jar" -version
     -author "I:\eclipse\workspace\test_junit\src\MaClasse.java" "I:\eclipse
    \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 le répertoire %JAVA_HOME%\bin soit inséré 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.

 

10.5.3. Impossible d'utiliser la tâche JUnit

Exemple :

Buildfile: I:\eclipse\workspace\test_junit\build.xml
init:
        [echo] Generation numero : 13 du July 2 2003
compil:
test:
       [junit] BUILD FAILED: file:I:/eclipse/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"

 

10.6. Un exemple complet

Exemple :

<?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 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 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>

Résultat de l'exécution :

Buildfile: I:\eclipse\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\workspace\test_junit\src\MaClasse.java...
 [javadoc] Loading source file I:\eclipse\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

 

10.7. L'éditeur de fichiers Ant

Eclipse 3.1 propose un éditeur dédié à la mise à jour de script Ant. Cet éditeur est utilisé est par défaut utilisé pour éditer les scripts Ant. Il propose des fonctionnalités qui facilitent leur rédaction.

Dans un fichier build.xml vide, il est possible de demander la création un fichier xml type avec deux targets en utilisant la combinaison de touches Ctrl+espace

Chaque partie qui compose le fichier build.xml est marquée avec une petite icône  dans la partie gauche. Chacune de ces icônes permet de masquer la partie qu'elle désigne. Lorsque le curseur passe au dessus de cette partie, une ligne désigne la partie.

Un clic sur l'icône permet de masquer la partie concernée.

L'icône se transforme en un petit signe plus : . En cliquant, sur cette icône, la partie masquée est de nouveau affichée. En laissant le curseur de la souris sur cette icône, la partie masquée est affichée dans une bulle d'aide.

 

Il est possible d'obtenir de l'aide à partir de l'éditeur. Il suffit de sélectionner un tag et d'appuyer sur la combinaison de touches Shift + F2.

Attention, une connexion internet est nécessaire pour utilisé en oeuvre cette fonctionnalité. Le navigateur interne s'ouvre avec une aide en ligne concernant le tag.

Cette documentation permet d'obtenir un descriptif du tag, un détail de ces paramètres et des exemples.

L'éditeur est capable de synchroniser les modifications apportées à un élément : pour cela il faut positionner le curseur sur l'élément et d'utiliser l'option « Renommer dans le fichier » du menu contextuel.

Toutes les occurrences sont marquées par un cadre. La modification de l'élément entraîne automatiquement la modification de toutes ces utilisations dans le fichier.

L'option « Formater » du menu contextuel permet de mettre en forme le code source du script Ant.


 

10.8. Le débogage de fichiers Ant

 

en construction
Cette section sera développée dans une version future de ce document

 

 


  9. Le refactoring 11. JUnit et Eclipse Imprimer Sommaire Consulter avec table des matières Développons en Java avec Eclipse   v 0.80  
Copyright (C) 2003-2007 Jean-Michel DOUDOUX