Ant - Types de données

Ant fournit un certain nombre de types de données prédéfinis. Ne confondez pas le terme «types de données» avec ceux qui sont disponibles dans le langage de programmation, mais considérez-les plutôt comme un ensemble de services déjà intégrés au produit.

Les types de données suivants sont fournis par Apache Ant.

Ensemble de fichiers

Les types de données de l'ensemble de fichiers représentent une collection de fichiers. Il est utilisé comme filtre pour inclure ou exclure des fichiers qui correspondent à un modèle particulier.

Par exemple, reportez-vous au code suivant. Ici, l'attribut src pointe vers le dossier source du projet.

L'ensemble de fichiers sélectionne tous les fichiers .java dans le dossier source, à l'exception de ceux qui contiennent le mot «Stub». Le filtre sensible à la casse est appliqué à l'ensemble de fichiers, ce qui signifie qu'un fichier portant le nom Samplestub.java ne sera pas exclu de l'ensemble de fichiers.

<fileset dir = "${src}" casesensitive = "yes">
   <include name = "**/*.java"/>
   <exclude name = "**/*Stub*"/>
</fileset>

Ensemble de motifs

Un jeu de modèles est un modèle qui permet de filtrer facilement des fichiers ou des dossiers en fonction de certains modèles. Les motifs peuvent être créés à l'aide des méta caractères suivants -

  • ? - Correspond à un seul caractère.

  • * - Correspond à zéro ou plusieurs caractères.

  • ** - Correspond à zéro ou plusieurs répertoires de manière récursive.

L'exemple suivant illustre l'utilisation d'un jeu de modèles.

<patternset id = "java.files.without.stubs">
   <include name = "src/**/*.java"/>
   <exclude name = "src/**/*Stub*"/>
</patternset>

Le patternset peut ensuite être réutilisé avec un ensemble de fichiers comme suit -

<fileset dir = "${src}" casesensitive = "yes">
   <patternset refid = "java.files.without.stubs"/>
</fileset>

Liste des fichiers

Le type de données de la liste de fichiers est similaire à l'ensemble de fichiers, à l'exception des différences suivantes -

  • filelist contient des listes de fichiers explicitement nommées et ne prend pas en charge les caractères génériques.

  • Le type de données filelist peut être appliqué pour des fichiers existants ou non existants.

Voyons l'exemple suivant du type de données filelist. Ici, l'attributwebapp.src.folder pointe vers le dossier source de l'application Web du projet.

<filelist id = "config.files" dir = "${webapp.src.folder}">
   <file name = "applicationConfig.xml"/>
   <file name = "faces-config.xml"/>
   <file name = "web.xml"/>
   <file name = "portlet.xml"/>
</filelist>

Ensemble de filtres

En utilisant un type de données de jeu de filtres avec la tâche de copie, vous pouvez remplacer certains textes dans tous les fichiers qui correspondent au modèle par une valeur de remplacement.

Un exemple courant consiste à ajouter le numéro de version au fichier des notes de publication, comme indiqué dans le code suivant.

<copy todir = "${output.dir}">
   <fileset dir = "${releasenotes.dir}" includes = "**/*.txt"/>
   
   <filterset>
      <filter token = "VERSION" value = "${current.version}"/>
   </filterset>
</copy>

Dans ce code -

  • L'attribut output.dir pointe vers le dossier de sortie du projet.

  • L'attribut releasenotes.dir pointe vers le dossier des notes de publication du projet.

  • L'attribut current.version pointe vers le dossier de la version actuelle du projet.

  • La tâche de copie, comme son nom l'indique, est utilisée pour copier des fichiers d'un emplacement à un autre.

Chemin

le pathle type de données est couramment utilisé pour représenter un chemin de classe. Les entrées du chemin sont séparées par des points-virgules ou des deux-points. Cependant, ces caractères sont remplacés lors de l'exécution par le caractère séparateur de chemin du système en cours d'exécution.

Le classpath est défini sur la liste des fichiers jar et des classes du projet, comme illustré dans l'exemple ci-dessous.

<path id = "build.classpath.jar">
   <pathelement path = "${env.J2EE_HOME}/${j2ee.jar}"/>
   
   <fileset dir = "lib">
      <include name = "**/*.jar"/>
   </fileset>
</path>

Dans ce code -

  • L'attribut env.J2EE_HOME pointe vers la variable d'environnement J2EE_HOME.

  • L'attribut j2ee.jar pointe vers le nom du fichier jar J2EE dans le dossier de base J2EE.