| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Comme pour la section files, les
fileSets correspondent à des fichiers qui ont une
position relative par rapport aux répertoires du projet.
Cependant, au contraire de la section files,
fileSets décrit des ensembles de fichiers, dont
le nom et le chemin respectent (ou ne respectent pas) un certain
format, et les répertoires dans lesquels on peut les trouver.
La forme la plus simple de fileSet spécifie
uniquement un répertoire où se trouvent les fichiers :
<assembly>
...
<fileSets>
<fileSet>
<directory>src/main/java</directory>
</fileSet>
</fileSets>
...
</assembly>
Cet ensemble de fichiers se compose de tout le contenu du répertoire
src/main/java de notre projet. Il profite des
valeurs par défaut des nombreux paramètres de cette section, aussi
regardons les brièvement.
Tout d'abord, vous avez remarqué que nous n'avons pas indiqué où
nous souhaitons mettre les fichiers à inclure dans l'assembly. Par
défaut, le répertoire de destination (que l'on peut préciser au moyen
de la balise outputDirectory) est le même que le
répertoire source (dans notre cas, src/main/java).
De plus, nous n'avons pas spécifié de format à respecter pour l'inclusion
ou l'exclusion de fichiers. Dans ce cas, le comportement par défaut est
de sélectionner tous les fichiers qui se trouvent dans le répertoire
source avec quelques exceptions importantes. Les exceptions à cette règle sont
surtout les fichiers et les répertoires de métadonnées des outils de gestion de
configuration. Ces exceptions par défaut sont utilisées lorsque la balise
useDefaultExcludes est à true, ce qui
est le cas par défaut. Lorsque l'option useDefaultExcludes
est activée, les répertoires tels que .svn/ et
CVS/ sont exclus d'office de la liste des fichiers à inclure dans l'archive
assembly. La Section 14.5.3, « Patterns d'exclusion par défaut pour la balise
fileSets » présente une
liste détaillée des formats d'exclusion par défaut.
Si vous voulez contrôler plus finement cet ensemble de
fichiers, vous pouvez le spécifier explicitement. L'
Exemple 14.7, « Inclusion de fichiers avec la balise fileSet » montre une balise
fileSet qui spécifie toutes les valeurs par défaut.
Exemple 14.7. Inclusion de fichiers avec la balise fileSet
<assembly>
...
<fileSets>
<fileSet>
<directory>src/main/java</directory>
<outputDirectory>src/main/java</outputDirectory>
<includes>
<include>**</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
<fileMode>0644</fileMode>
<directoryMode>0755</directoryMode>
</fileSet>
</fileSets>
...
</assembly>
Les sections includes se composent d'une
liste de balises include qui contiennent des patterns
de chemin et de nom de fichier. Ces formats peuvent avoir un ou plusieurs
jokers comme ‘**’ qui correspond à un ou plusieurs répertoires, ‘*’ qui
correspond à une partie d'un nom de fichier ou ‘?’ qui remplace
un caractère quelconque dans un nom de fichier. L'Exemple 14.7, « Inclusion de fichiers avec la balise fileSet » utilise une balise fileMode
pour spécifier que les fichiers de ce groupe devront être lisibles par tous mais
éditables uniquement par le propriétaire. Comme la balise fileSet
peut inclure des répertoires, il existe aussi une balise directoryMode
pour spécifier le mode du répertoire. Elle fonctionne comme
fileMode. Comme il faut avoir les droits d'exécution
sur un répertoire pour pouvoir en lister le contenu, il faut
s'assurer que les répertoires sont bien exécutables en plus d'être
lisibles. Comme pour les fichiers, seul le propriétaire peut modifier
les répertoires et leurs contenus dans cet exemple.
La balise fileSet possède des options supplémentaires.
Premièrement, elle peut contenir une balise excludes
de la même forme que la balise includes. Les patterns
d'exclusion vous permettent d'exclure des fichiers spécifiques d'un
fileSet s'ils correspondent au pattern spécifié. Les patterns
d'inclusion prennent le pas sur ceux d'exclusion. Vous pouvez aussi
mettre à true l'élément filtering si
vous voulez remplacer les expressions dans les fichiers ainsi sélectionnés par les
valeurs des propriétés. Les expressions sont délimitées soit par
${ et } (expression standard Maven,
par exemple ${project.groupId}) ou par
@ suivi de @ (expression standard Ant,
par exemple @project.groupId@). Vous pouvez
choisir la fin de ligne dans vos fichiers grâce à la balise
lineEnding. Les valeurs autorisées pour la balise
lineEnding sont :
Conserve la fin de ligne des fichiers originaux. (C'est la valeur par défaut).
Fin de ligne de type Unix
Juste le caractère Nouvelle Ligne
Fin de ligne de type MS-DOS
Caractère Retour à la Ligne suivi du caractère Nouvelle Ligne
Enfin, si vous voulez vous assurer que tous les éléments de sélection
de fichiers sont utilisés, vous pouvez mettre la balise
useStrictFiltering à true
(la valeur par défaut est false). Cela peut-être très utile
si des patterns inutilisés indiquent des fichiers manquants dans un répertoire
intermédiaire. Lorsque la balise useStrictFiltering est à
true, le plugin Assembly échouera si un pattern d'inclusion
n'est pas satisfait. En d'autres termes, si vous avez un pattern d'inclusion qui
inclut un fichier d'un build et que ce fichier est absent alors, lorsque
la balise useStrictFiltering est à true
le build Maven échouera lorsqu'il ne trouvera pas ce fichier.