recopiés dans le dossier <bin> afin qu'ils soient dans le classpath du projet. On utilisera alors le patternset conf,
pour les désigner.
• lignes 27-30 : la balise <target> désigne une tâche du script. C'est la première que nous rencontrons. Tout ce qui
a précédé relève de la configuration de l'environnement d'exécution du script ant. La tâche s'appelle clean. Elle
s'exécute en deux temps : le dossier <bin> est supprimé (ligne 28) pour être ensuite recréé (ligne 29).
• lignes 33-35 : la tâche compile qui est la tâche par défaut du script (ligne 1). Elle dépend (attribut depends) de la
tâche clean. Cela signifie qu'avant d'exécuter la tâche compile, ant doit exécuter la tâche clean, c.a.d. nettoyer le
dossier <bin>. Le but de la tâche compile est ici de compiler les sources Java du dossier <src>.
• ligne 34 : appel du compilateur Java avec trois paramètres :
• srcdir : le dossier contenant les sources java, ici le dossier <src>
• destdir : le dossier où doivent être rangés les .class générés, ici le dossier <bin>
• classpathref : le classpath à utiliser pour la compilation, ici toutes les archives jar de l'arborescence du
dossier <lib>
• lignes 38-45 : la tâche copyconf dont le but est de copier dans le dossier <bin> tous les fichiers .xml et
.properties du fichier <src>.
• ligne 48 : définition d'une tâche à l'aide de la balise <taskdef>. Une telle tâche a vocation à être réutilisée ailleurs
dans le script. C'est une facilité de codage. Parce que la tâche est utilisée à divers endroits du script, on la définit
une fois avec la balise <taskdef> et on la réutilise ensuite via son nom, lorsqu'on en a besoin.
• la tâche s'appelle hibernatetool (attribut name).
• sa classe est définie par l'attribut classname. Ici, la classe désignée sera trouvée dans l'archive
[hibernate-tools.jar] dont nous avons déjà parlée.
• l'attribut classpathref indique à ant où chercher la classe précédente
• les lignes 51-60 concernent la tâche qui nous intéresse ici, celle de la génération du schéma de la base de données
image des objets @Entity de notre projet Eclipse.
• ligne 51 : la tâche s'appelle DDL (comme Data Definition Language, le SQL associé à la création des
objets d'une base de données). Elle dépend des tâches compile et copyconf dans cet ordre. La tâche
DDL va donc provoquer, dans l'ordre, l'exécution des tâches clean, compile et copyconf. Lorsque la
tâche DDL démarre, le dossier <bin> contient les .class des sources .java, notamment des objets
@Entity, ainsi que le fichier [META-INF/persistence.xml] qui configure la couche JPA / Hibernate.
• lignes 53-59 : la tâche [hibernatetool] définie ligne 48 est appelée. On lui passe de nombreux paramètes,
outre ceux déjà définis ligne 48 :
• ligne 53 : le dossier de sortie des résultats produits par la tâche sera le dossier courant .
• ligne 54 : le classpath de la tâche sera le dossier <bin>
• ligne 56 : indique à la tâche [hibernatetool] comment elle peut connaître son environnement d'exécution
: la balise <jpaconfiguration/> lui indique qu'elle est dans un environnement JPA et qu'elle doit donc
utiliser le fichier [META-INF/persistence.xml] qu'elle trouvera ici dans son classpath.
• la ligne 58 fixe les conditions de génération de la base de données : drop=true indique que des ordres
SQL drop table doivent être émis avant la création des tables, create=true indique que le fichier texte des
ordres SQL de création de la base doit être créé, outputfilename indique le nom de ce fichier SQL - ici
schema.sql dans le dossier <ddl> du projet Eclipse, export=false indique que les ordres SQL générés ne
doivent pas être joués dans une connexion au SGBD. Ce point est important : il implique que pour
exécuter la tâche, le SGBD cible n'a pas besoin d'être lancé. delimiter fixe le caractère qui sépare deux
ordres SQL dans le schéma généré, format=true demande à ce qu'un formatage de base soit fait sur le
texte généré.
• les lignes 63-72 définissent la tâche nommée BD. Elle est identique à la tâche DDL précédente, si ce n'est que
cette fois elle génère la base de données (export="true" de la ligne 70). La tâche ouvre une connexion sur le
SGBD avec les informations trouvées dans [persistence.xml], pour y jouer le schéma SQL et générer la base de
données. Pour exécuter la tâche BD, il faut donc que le SGBD soit lancé.
2.1.7 Exécution de la tâche ant DDL
Pour exécuter le script [ant-hibernate.xml], il nous faut faire tout d'abord quelques configurations au sein d'Eclipse.
Persistance Java 5 par la pratique
20/305
1
2