Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    8.5.2. Section fileSets

    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 8.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 8.7, « Inclusion de fichiers avec la balise fileSet » montre une balise fileSet qui spécifie toutes les valeurs par défaut.

    Exemple 8.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 8.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 :

    keep

    Conserve la fin de ligne des fichiers originaux. (C'est la valeur par défaut).

    unix

    Fin de ligne de type Unix

    lf

    Juste le caractère Nouvelle Ligne

    dos

    Fin de ligne de type MS-DOS

    crlf

    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.