1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 

Ant - L'automatisation des tâches du programmeur

2.5.La balise <target>

<target name="init" description="Initialize the project">
...
</target>
<target name="compile" depends="init" description="compile the sources">
...
</target>
<target name="documentation">
...
</target>
<target name="dist" depends="compile" description="Generate a jar file">
...
</target>
<target name="clean">
...
</target>

Le reste du fichier est constitué d'une succession de cibles correspondant chacune à une étape de la construction de l'application. Elles se voient incarnées par une paire de balises target qui renferment une liste de tâches à exécuter. Ces dernières doivent bien sûr se voir également insérées sous la forme de balises XML. Le nom de chacune d'elles correspond à une fonction précise et différents paramètres peuvent être spécifiés par le biais d'attributs ou de nouvelles balises insérées à l'intérieur de ces dernières.

2.5.1.Ecrire la cible “init”

<target name="init" description="Initialize the project ">
<tstamp/>
<mkdir dir="${build.dir}" />
<mkdir dir="${doc.dir}" />
<mkdir dir="${dist.dir}/lib"/>
</target>


Comme l'indique l'attribut name de la balise target, notre première cible est nommée init. L'attribut description permet d'afficher un message d'aide sur la cible lorsque l'utilisateur tape la commande suivante :

ant -projecthelp

Bien qu'il soit optionnel, nous vous conseillons donc de la renseigner systématiquement pour toutes les cibles que vous souhaitez rendre accessibles. Cette première cible aura pour effet d'exécuter les tâches tstamp et mkdir qu'elle contient. tstamp a pour effet d'assigner la date et l'heure actuelle aux variables DSTAMP, TSTAMP et TODAY, respectivement sous la forme “aaaammjj”, “hhmm” et “mois jour année”. La tâche mkdir acceptent comme unique attribut le chemin du répertoire à créer. Si ce dernier comprend des dossiers inexistants, ces derniers sont créés automatiquement. Dans notre cas, le répertoire dist sera ainsi créé implicitement par la commande suivante avant l'ajout du répertoire lib :

<mkdir dir=”${dist.dir}/lib” />

2.5.2.Ecrire la cible “compile”

Observons à présent la cible compile.

<target name="compile" depends="init" description="compile the sources">
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>

L'attribut « depends », comme son nom l'indique, a pour fonction de spécifier les étapes devant être effectuées avant d'exécuter les clauses de cette cible. Celui-ci doit contenir le nom de ces dernières séparées par des virgules.

2.5.2.1.la tâche javac


<javac srcdir="${src.dir}" destdir="${build.dir}"/>

Notre cible ne compte ici qu'un seul élément appelant la tâche javac, dont le but est de compiler tous les fichiers sources Java présents dans le répertoire indiqué dans l'attribut srcdir et de placer les classes compilées ainsi obtenues dans le dossier dont le nom est fourni par destdir.

Cette opération est récursive. Le fichier présent dans « ./src/com/example/magicalSquare/ » sera donc bien compilé. A l'instar de make, Ant compilera chaque classe uniquement s'il n'existe pas déjà un fichier compilé dans le répertoire de destination ou si la date d'enregistrement d'un fichier éventuellement déjà présent dans ce dernier est plus ancienne que le fichier source. Ainsi, si nous lançons Ant, modifions le fichier Square.java, puis relançons immédiatement la compilation, seul la classe Square sera à nouveau générée.

2.5.3.Ecrire la cible “run”

La cible run nous permet d'exécuter le logiciel, avec, si besoin, des arguments.

2.5.3.1.la tâche java

<java
dir="${build.dir}"
classname="com.example.magicalSquare.TestSquare"
fork="true" />

Nous l'utilisons afin de démarrer notre application, tout comme nous l'aurions fait avec la commande “java” dans la console du système. Trois arguments vont être définis :
  • classname permet de définir la classe de démarrage de l'application (celle contenant la méthode public void main(String[] args))
  • dir, permettant de désigner le répertoire racine de l'application. On y définit le répertoire build.
  • fork indique qu'une nouvelle machine virtuelle sera utilisée. Cette option est nécessaire afin de changer le répertoire d'exécution (attribut dir).

2.5.3.2.le paramètre classpath

Elle est imbriquée dans la tâche <java> afin de définir la variable classpath. Celle-ci contient le chemin dans le système de fichier vers les librairies jar nécessaire à l'application (les drivers d'une base de données par exemple).
Le contenu de l’attribut name nécessite une explication : **/*.jar. Cela signifie que l’on charge tous les fichiers terminant par « .jar », dans tous les sous-répertoires de ${lib.dir}.
<java …>
<classpath>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</classpath>
</java>

Le paramètre fileset permet de lire l'ensemble dans fichier jar dans le répertoire lib.
Le paramètre include permet d’inclure dans le classpath les fichiers correspondant à l’expression régulière donnés par l’attribut name.

2.5.4.Ecrire la cible documentation

2.5.4.1.La tâche javadoc


<javadoc
packagenames="com.example.magicalSquare"
sourcepath="${src.dir}"
destdir="${doc.dir}"/>


La tâche javadoc de la cible documentation appelle le programme homonyme qui permet de générer automatiquement des pages d'aide en HTML à partir du code source de vos classes. Contrairement à javac, cette tâche génère systématiquement les fichiers de documentation sans vérifier si ces derniers existent déjà ou sont à jour. Il est donc conseillé de ne l'appeler que de manière ponctuelle.

Nous fournissons ici trois attributs :
    • destdir indique le dossier dans lequel seront stockées les pages HTML,
    • sourcepath le répertoire racine de vos sources
    • packagenames indique la liste des paquetages qui devront être documentés.

Vous pouvez compiler uniquement certains fichiers en omettant ces deux derniers paramètres et en précisant leur chemin à l'aide de l'attribut sourcefiles.

2.5.5.Ecrire la cible dist

2.5.5.1.La tâche jar


<target name="dist" depends="compile" description="Generate a jar file">
<jar
jarfile="${dist.dir}/magical_Square-${DSTAMP}.jar" basedir="${build.dir}"/>
</target>

L'avant-dernière tâche sert à créer une archive jar qui permettra de distribuer facilement vos classes compilées. Vous pouvez remarquer dans l'attribut jarfile que nous utiliserons ici la variable ${DSTAMP} (créé par l’appel de la tâche <tstamp/>) afin d'inclure la date de compilation dans le nom d'archive. Un nouveau fichier apparaîtra ainsi chaque jour, permettant de disposer automatiquement d'un historique de notre projet. Cette pratique est extrêmement courante dans le contexte de projets OpenSource, où l'on procède quotidiennement à des “nightly builds”, des compilations systématiques du code source d'un projet.

2.5.6.Ecrire la cible “clean”

La cible clean est similaire à celle utilisée dans make et a pour fonction de nettoyer notre projet de tous les répertoires créés par Ant.

2.5.6.1.La tâche delete


<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${doc.dir}"/>
<delete dir="${dist.dir}"/>
</target>

Nous utilisons pour cela la tâche delete et son attribut dir qui efface récursivement un répertoire. Vous pouvez également effacer une liste de fichiers grâce à l'attribut file.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Pattern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design pattern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée