Université
Joseph Fourier IMA |
Année
Universitaire 2004-2005
M1 Info OGL –Outils
de Génie Logiciel TP |
Concepteur: Didier DONSEZ
TP –
Jakarta ANT
Liens :
http://www-adele.imag.fr/~donsez/cours/ant.pdf
http://www-adele.imag.fr/~donsez/cours/tpant.zip
http://ant.apache.org/manual/index.html
L’objectif de ce TP est de vous montrer la manipulation de ANT pour organiser vos projets de développement
Ex0: Installation de
Jakarta ANT
Installez ANT à partir du lien http://ant.apache.org/bindownload.cgi sur votre poste si ce n’est pas déjà fait
Configurez les 2 variables d’environnement JAVA_HOME et ANT_HOME
Ajoutez %ANT_HOME%\bin à votre variable PATH Windows ou $ANT_HOME/bin à votre variable PATH Unix.
Ex1: Compilation Java
L’exemple compilejava comporte un build.xml qui permet d’organiser et de compiler un ensemble de source Java.
Regardez les targets disponibles dans le build.xml. Testez les. Corrigez les 2 erreurs présentes dans le fichier Hello.java
Ajoutez une target "execute" qui exécute la classe hello.Hello. Quelle tache faut il utiliser ? Le classpath doit comporter le jarfile produit !!!
Ex2: Compilation C#
L’exemple compilecsharp comporte un build.xml qui permet d’organiser et de compiler, un ensemble de source C# et de produire un exécutable pour .NET.
Regardez les targets disponibles dans le build.xml. Les tester.
Ajoutez une target "execute" qui exécute la classe hello.Hello. Quelle tache faut il utiliser ?
Remarque : Il faut que le SDK .NET soit installé sur votre poste de travail.
Ex3: Input
A partir de l’exemple compilejava modifié dans l’exercice 1, modifiez la target « execute » pour que l’utilisateur entre des arguments à ce programme (utiliser la tache <input>).
Ex4: Interactivité
A partir de l’exemple compilejava modifié dans l’exercice 1, écrivez une classe hello.HelloInteractive qui interroge elle-même l’utilisateur pour qu’il entre la liste de noms à saluer.
Ajoutez et testez la target « execute.interactive » avec cette classe. Pourquoi le programme est-il bloqué ?
Ajoutez une target « generate.run.script » qui génère un run.bat ou un run.sh selon la plate-forme de votre poste de travail qui contient la ligne de commande lançant le programme hello.HelloInteractive (utiliser la tâche <echo> et la condition if dans la target)
Remarque : la lecture de la saisie de l’utilisateur peut se faire avec la méthode BufferedReader.readLine()
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
String
line=br.readLine();
Ex5: Déploiement de
site Web par FTP
La tâche <ftp> permet de récupérer ou d’installer des fichiers à distance. Elle dépend d’une bibliothèque externe ! Laquelle ?
Téléchargez et installez cette bibliothèque et installer la ! Dans quel répertoire ?
Testez l’exemple uploadbyftp en déployant (upload) des documents (HTML, icones, images) sur une machine distante ftp://ufrima.imag.fr dans le répertoire public_html.
Ex6a: Développement
d’une tâche ANT
ThumbnailizeTask doit réaliser une vignette à partir d’une
image JPEG ou GIF. Cette tache est utile à la construction de site Web
personnels comportant des photos !
Après avoir regarder la documentation ANT concernant le développement de tâches custom et regardez la tâche custom de les 2 exemples filestattask et myechotask , développez une version simplifiée de la tâche ThumbnailizeTask. Le code de « thumbnailization » pourra se retrouver à partir de l’exemple du Technical Tip http://developer.java.sun.com/developer/TechTips/1999/tt1021.html#tip1
<thumbnailize
file="myimg.gif" tofile="t_myimg.gif"
maxdim="128"/> <thumbnailize
file="myimg.gif" todir="${webpages.dir}/thumbnail"
maxdim="128"/> <thumbnailize
dir="${src.dir}" todir="${webpages.dir}/thumbnail"
maxdim="128"/> Utilisez cette target avant la target transfer de l’exercice
5 La seconde version de ThumbnailizeTask accepte les FileSets comme
la plupart des tâches de la distribution ANT. <thumbnailize
todir="${webpages.dir}/thumbnail" maxdim="128"> <fileset dir="${img.dir}"
>
<include name="**/*.jpg"/> <exclude
name="**/t_*.jpg"/>
</fileset> </thumbnailize> Inspirez vous de l’implémentation de la tâche copy pour
réaliser cette deuxième version de ThumbnailizeTask Pour info, la tache <image> introduite dans Ant 1.6
fait ce travail ! Ex6b: Développement
d’une tâche ANT SlideshowTask génère un diaporama à partir des photos se
trouvant dans un répertoire. Le diaporama est constitué d’une page d’index HTML
contenant les vignettes (thumbnail) des photos et d’une page diapo HTML par
photo contenant la photo et une barre de navigation. La barre de navigation
permet de passer à la suivante, revenir à la précédente et de remonter à
l’index. Les attributs de la tâche sont : dir: le répertoire dans lequel
sont les photos et dans lequel les pages HTML sont générées. maxdim: la hauteur ou largeur
maximale des vignettes qui sont placées par défaut dans le sous répertoire
.thumbnail du répertoire désigné par l’attribut dir cols: le nombre de vignettes
affichées (en largeur) dans la page d’index timer: le délai de passage d’une
diapo à une autre dans les documents diapo. circular: drapeau indiquant si la
transition de la dernière photo revient sur la première. Par exemple, l’exécution de la tâche suivante sur un
répertoire contenant 4 photos : im1.jpg, im2.jpg, im3.jpg, im4.jpg <slideshow dir="${photo.dir}
" maxdim="128" cols="3" timer="20"
circular="yes"/> génère la page d’index suivante et des pages de diapo
similaire à la diapo3.htm index.htm <HTML><HEAD> <TITLE>Diaporama</TITLE> </HEAD> <BODY><CENTER> <H1>Diaporama</H1> <TABLE
COLS="3"> <TR> <TD><A HREF="diapo0.htm"><IMG SRC=".thumbnail/im1.jpg"></A></TD> <TD><A
HREF="diapo1.htm"><IMG
SRC=".thumbnail/im2.jpg"></A></TD> <TD><A
HREF="diapo2.htm"><IMG
SRC=".thumbnail/im3.jpg"></A></TD> </TR> <TR> <TD><A
HREF="diapo3.htm"><IMG
SRC=".thumbnail/im4.jpg"></A></TD> <TD></TD> <TD></TD> </TR> </CENTER> </BODY> </HTML> diapo3.htm <HTML><HEAD> <TITLE>Diapo
3</TITLE> <!--
Timer --> <META
HTTP-EQUIV="Refresh" CONTENT="20; URL=diapo0.htm"> </HEAD> <BODY> <CENTER> <!--
Nav bar --> <A
HREF="diapo2.htm"><<</A> [<A
HREF="index.htm">Top</A>] <A
HREF="diapo3.htm">>></A> <BR> <!-- Photo --> <IMG
SRC="im4.jpg"> </CENTER> </BODY></HTML> Conseil : reprenez le projet thumbnail pour démarrer
slideshow. Ex6c: Développement
d’une tâche ANT EncryptTask (resp. DecrytTask) chiffre (resp. déchiffre) des
fichiers avec les algorithmes de cryptographie accessible par le JCE. Ces
taches sont utiles pour protéger ses fichiers des curieux. Rappelons que
l’usage de la cryptographie est à manipuler avec précaution en France et dans
de nombreux pays ! Ex7: XSLT La tâche <xslt>
permet de transformer un document XML en un autre au moyen du feuille de style
XSL-T L’exemple xslt comporte un build.xml qui illustre une telle transformation. Testez juste cet exemple. Ex8: SQL La tâche <sql> permet
d’envoyer des ordres SQL à un SGBD relationnel via un driver JDBC L’exemple sql comporte un build.xml qui illustre la création d’une base et la
consultation de tables. Testez juste cet exemple. Ex9: Download avec GET La tâche <get> permet
de récupérer par téléchargement un document sur un site distant (par HTTP,
HTPPS, …) L’exemple downloadbyget comporte
un build.xml qui illustre un tel
téléchargement. Testez juste cet exemple. Ex10:
LineNumberFilterReader LineNumberFilterReader est un filtre qui ajoute les numéros
de ligne en entête de chaque ligne Implémentez et testez ce filtre. Ex11: CCPFilterReader CPPFilterReader est un filtre qui réalise la substitution de
macros et inclusion de fichiers comme le fait CPP (#define, #ifdef, #ifndef,
#include, …) Implémentez et testez ce filtre. Ex12: Automatisation
des tests unitaires avec ANT Vous ferrez cet exemple avec Ioannis PARISSIS. Tester l’exemple junitant Ex13: Sources Java en
hypertexte L’utilitaire javasrc
présenté en cours par Jean-Marie Favre construit un ensemble de documents HTML
permettant de naviguer dans un ensemble de sources Java via des hyperliens. Cet utilitaire dispose d’une tache
ANT. Modifiez le build.xml de l’exercice 1 pour construire un
ensemble de documents HTML (dans un répertoire htmlsrc) à partir de l’ensemble
de sources Java présents dans le répertoire src Faites de même avec l’utilitaire Java2HTML (http://www.java2html.com) Ex14: Qualité d’un
développement L’utilitaire javanccs analyse la qualité d’un développement
en Java à partir de sources et produit un rapport comportant plusieurs
métriques qualité Cet utilitaire dispose d’une tache
ANT. Modifiez le build.xml de l’exercice 1 pour produire ce
rapport à partir de l’ensemble de sources Java présents dans le répertoire src Ex15: Développement
d’une autre tâche ANT JoBo (http://www.matuschek.net/software/jobo/index.html)
est un robot permettant de récupérer un site Web (documents HTML, images, ...)
en suivant les hyperliens présents dans les documents HTML récupérés. A partir des sources de JoBo, écrire une tâche
ANT mettant en oeuvre JoBo pour la récupération de sites Web <robot rooturl="http://www-adele.imag.fr/~donsez/cours" todir="./mirror" ... others options (depth, mimefilter,
...) ... /> Remarque: il est possible que cette tâche existe
désormais ! Ex16: Repeat La tâche <repeat> permet de répeter l’exécution d’une
cible L’exemple repeattask comporte un
build file qui illustre la répetition d’une cible. Testez juste cet exemple il vous sera utile pour la suite. Ex17:
Mini-Projet : Un outil de publipostage (mailingpack) Réaliser un outil de publipostage par mail à partir de
fichier de données au format CSV et d’un fichier patron Premièrement, regardez les exemples replace, script qui
illustrent les tâches <script>, <scriptdef>, <replace> Vous utiliserez entre autre les tâches <script>,
<scriptdef>, <replace>, <mail>, <copy> … et les classes
java.util.StringTokenizer.