---
title: "Avez-vous déjà eu besoin d'un schéma pour Apache Ant ?"
date: "2012-09-05"
tags: 
  - "ant-schema"
  - "ant-xsd"
  - "apache-ant"
  - "xmlspy"
description: Découvrez comment créer un schéma XML personnalisé pour Apache Ant en utilisant XMLSpy, ce qui permettra d'améliorer la validation et la prise en charge de l'édition de vos fichiers Ant.
---
Status: #blog

Tags:  #ant-schema #ant-xsd #apache-ant #xmlspy

Categories: [Altova](/blog/fr/category/altova.md) 
# Avez-vous déjà eu besoin d'un schéma pour Apache Ant ?

Récemment, j'ai rencontré des problèmes avec les fichiers Ant pour un projet logiciel sur lequel je travaillais. J'éditais l'un de ces fichiers avec [XMLSpy](https://www.altova.com/fr/xmlspy.html), mais je ne bénéficiais pas de l'aide contextuelle ni de la complétion automatique du code, car je n'avais pas de schéma associé à mon script.

Cela semblait être un problème simple, alors je me suis mis en quête du schéma correspondant.

J'ai rapidement trouvé une question sur Stack Overflow qui recherchait exactement la même chose. La réponse est la suivante : il n'existe pas de schéma Ant ni de DTD. La raison est simple : au-delà de la difficulté de créer un modèle flexible et complet du cœur d'Ant, il devrait également être capable d'inclure toutes les tâches externes.

Immédiatement, je me suis souvenu que j'étais déjà venu ici il y a quelques années, mais cette fois, j'ai pensé utiliser la fonction de génération de schémas d'XMLSpy pour essayer de trouver une solution..

<table class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;" cellspacing="0" cellpadding="0"><tbody><tr><td style="text-align: center;"><a style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;" href="http://lh6.ggpht.com/-0YuLu2iBKTk/UEEWxHUUk5I/AAAAAAAAAU0/Xz5UgEpor1U/s1600-h/clip_image002%25255B3%25255D.jpg"><img style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image002" src="https://lh5.ggpht.com/-7-tEVMHFTzo/UEEWxala_SI/AAAAAAAAAU8/xonqJUBJBZo/clip_image002_thumb.jpg?imgmax=800" alt="XMLSpy XML editor" width="202" height="177" border="0"></a></td></tr><tr><td class="tr-caption" style="text-align: center;"></td></tr></tbody></table>

<!--more-->

Si la création d'un schéma officiel n'est pas envisageable, vous pouvez utiliser XMLSpy pour créer rapidement un schéma qui couvre les tâches et les fonctionnalités spécifiques que vous utilisez. Au fur et à mesure que vous utilisez davantage de fonctionnalités, l'ajout à votre fichier XSD représente un effort minime, en échange d'un excellent support de modification et d'une aide à la validation.

XMLSpy peut générer des schémas à partir d'un ensemble de fichiers XML. Pour ce faire, vous devez créer un projet en sélectionnant "Nouveau projet" dans le menu "Projet". Assurez-vous que la fenêtre "Projet" est ouverte ; si ce n'est pas le cas, utilisez le menu "Fenêtre" pour l'ouvrir. Ensuite, ajoutez vos fichiers Ant à un dossier en faisant un clic droit sur le dossier et en sélectionnant "Ajouter des fichiers".

[![Projet XMLSpy](https://lh5.ggpht.com/-mre2_DXTlp4/UEEWyHDjglI/AAAAAAAAAVM/O_eIwwrQBhY/clip_image004_thumb.jpg?imgmax=800 "XMLSpy Project")](http://lh3.ggpht.com/-RuUoEQXnGbY/UEEWx5722GI/AAAAAAAAAVE/hJh7kKSxiSU/s1600-h/clip_image004%25255B3%25255D.jpg)

Après avoir ajouté les fichiers, cliquez à nouveau avec le bouton droit de la souris sur le dossier, puis sélectionnez "Générer le DTD/le schéma".

[![Génération d'un schéma à partir des fichiers Ant](https://lh6.ggpht.com/-ozQ64GJ-nWk/UEEWy4Qxf5I/AAAAAAAAAVc/engfRgPVVMs/clip_image006_thumb.jpg?imgmax=800 "Generating a Schema based on Ant files")](http://lh3.ggpht.com/-eu93uiRCaZI/UEEWyVmYsKI/AAAAAAAAAVU/v9-LmOs5zlc/s1600-h/clip_image006%25255B3%25255D.jpg)

Mon projet contient des dizaines de scripts Ant, ce qui nous offre une vision assez complète de l'utilisation d'Ant dans le cadre du développement que nous réalisons. Cela signifie que XMLSpy pourra analyser toutes les différentes manières dont nous utilisons Ant et générera un schéma qui couvrira tout ce que nous avons fait avec Ant jusqu'à présent.

[![Fourmilières](https://lh3.ggpht.com/-UUx0gazWKws/UEEWzeDg4TI/AAAAAAAAAVs/Pxaz6KoFviY/clip_image008_thumb.jpg?imgmax=800 "Ant files ")](http://lh4.ggpht.com/-ymrJbZ-C7FU/UEEWzLlutwI/AAAAAAAAAVk/ZnZLs6ZeTDA/s1600-h/clip_image008%25255B3%25255D.jpg)

La création du schéma a été très simple. Cela dit, bien qu'XMLSpy soit excellent pour générer des modèles, lorsque vous lui fournissez 60 fichiers Ant, vous obtenez inévitablement un schéma très étendu. Vous pouvez voir mes sélections dans la fenêtre de dialogue "Générer le schéma" sur cette capture d'écran. Les options les plus importantes pour moi étaient d'obtenir des types globaux et peu d'énumérations, afin de simplifier l'extension du schéma.

[![Générer la boîte de dialogue XSD](https://lh6.ggpht.com/-d6dHbL60V1M/UEEW0Pl0bdI/AAAAAAAAAV8/Jo1vECdU4FQ/clip_image010_thumb.jpg?imgmax=800 "Generate XSD dialog")](http://lh4.ggpht.com/-QccmDlCiiac/UEEWzwq_xuI/AAAAAAAAAV0/iXWZfw_JQLI/s1600-h/clip_image010%25255B3%25255D.jpg)

Avant de pouvoir améliorer le nouveau schéma XSD, je devais décider de ce que je voulais obtenir de ce travail.

Ant est extrêmement flexible et permet d'utiliser toutes sortes de valeurs dans les attributs, et de nombreuses tâches externes ne sont pas organisées en espaces de noms. Je ne voulais pas un schéma parfait, mais simplement un schéma qui serait utile pour ce projet. Mon objectif était d'avoir un schéma très flexible qui permette à XMLSpy de proposer une assistance pour la saisie des données lorsque je travaille sur des fichiers Ant, afin de faciliter et d'accélérer le processus.

À plus long terme, nous pourrions peut-être vouloir affiner davantage le système pour nous aider à rédiger des fichiers Ant cohérents et corrects, mais cela reste à faire. Pour l'instant, je voulais simplement une démonstration très simple.

Compte tenu de cela, j'ai commencé à simplifier le schéma généré. XMLSpy génère des fichiers XSD qui couvrent tous les cas de manière exhaustive. Il m'a fourni un schéma techniquement correct, mais qui était un peu plus détaillé que ce dont j'avais besoin. Cependant, dans la vue XSD, il a suffit de quelques minutes de manipulation des éléments et de suppression des branches inutiles pour obtenir un modèle très simple.

[![Schéma de fourmi](https://lh4.ggpht.com/-w_6eLKDf0uY/UEEW0x2LEiI/AAAAAAAAAWM/IQ9kJ0I87kQ/clip_image012_thumb.jpg?imgmax=800 "Ant schema")](http://lh5.ggpht.com/-QtfDL83gfzY/UEEW0iCNveI/AAAAAAAAAWE/rMjq6ILsGgc/s1600-h/clip_image012%25255B3%25255D.jpg)
 
La première étape cruciale a été atteinte lorsque j'ai pu vérifier tous les environ 60 fichiers Ant par rapport à mon schéma XSD simplifié. Après avoir réintroduit quelques éléments que j'avais involontairement supprimés lors de la correction, tout était en ordre. J'ai fait un clic droit sur mon dossier de projet et j'ai sélectionné "valider tout". Tout a été validé en quelques secondes.

[![Valider Ant par rapport au schéma généré](https://lh6.ggpht.com/-s3ozsT7aSuk/UEEW1oNCvjI/AAAAAAAAAWc/yHwfkOFnMaM/clip_image014_thumb.jpg?imgmax=800 "Validating Ant against generated schema")](http://lh5.ggpht.com/-ocdYbJiia6g/UEEW1GaH5DI/AAAAAAAAAWU/EMxziDPR_Zw/s1600-h/clip_image014%25255B3%25255D.jpg)
 

Le deuxième point important était la possibilité d'obtenir une aide contextuelle dans XMLSpy lorsque j'ai créé un nouveau fichier Ant. J'ai très rapidement réalisé qu'il y aurait de nombreux nouveaux éléments à ajouter au fil du temps, au fur et à mesure que nous utiliserions de nouvelles tâches et fonctionnalités. Par exemple, j'ai découvert que j'avais besoin d'ajouter l'élément `sysproperty` à `junit` parce que nous ne l'avions pas utilisé auparavant.

Mais ajouter un élément ou un attribut ici ou là est simple dans la vue Schéma, et avec le temps, nous aurons de moins en moins besoin de le faire.

[![Ajouter des éléments dans la vue du schéma](https://lh6.ggpht.com/-9vVSTwycnI8/UEEW2Dn0Y5I/AAAAAAAAAWs/zcDGrzUJv2g/clip_image016_thumb.jpg?imgmax=800 "Adding elements in schema view")](http://lh4.ggpht.com/-DBr4vr075Iw/UEEW1yNzjOI/AAAAAAAAAWk/fTHD2c8VKC0/s1600-h/clip_image016%25255B3%25255D.jpg)


Dans l'ensemble, pour mes besoins simples, la création d'un schéma Ant s'est avérée être une petite victoire agréable.

[![Édition d'Ant avec l'aide de l'intellisense](https://lh6.ggpht.com/-j64qoAj-y1s/UEEW2zqdjJI/AAAAAAAAAW8/q1Mm5Ip6uoU/clip_image018_thumb.jpg?imgmax=800 "Editing Ant with intellisense")](http://lh4.ggpht.com/-3Ol_tgqt7q0/UEEW2buRmOI/AAAAAAAAAW0/x1oJ5PFJ6Xs/s1600-h/clip_image018%25255B3%25255D.jpg)


Si vous souhaitez utiliser mon schéma très simple comme point de départ pour créer le vôtre, n'hésitez pas à le [télécharger ici](http://metateam.net/extras/ant-schema.xsd). Et faites-moi savoir comment il vous convient.
