Question

J'ai un fichier pom existant qui comprend une section plugin maven-pot. Il court pour le but jarre d'essai et exclut actuellement quelques répertoires:

<excludes>
     <exclude>...</exclude>
     <exclude>...</exclude>
     <exclude>somedir/**</exclude>
 </excludes>

Je dois inclure un fichier dans le répertoire somedir mais laisser le reste des fichiers dans le répertoire somedir. J'ai lu que comprend avoir la priorité sur exclut donc j'ajouté quelque chose comme ce qui suit (il n'y avait pas includes avant):

<includes>
    <include>somedir/somefile.xml</include>
</includes>

Cela finit par créer un fichier jar pour le test avec seulement quelques fichiers qu'il contient (juste la substance dans META-INF). Le fichier que je n'est pas inclus dans le pot soit. Ce que je pense est un pot qui est identique au pot qui a été créé avant mon changement inclut avec celui fichier supplémentaire.

Qu'est-ce que je suis absent ici?

Était-ce utile?

La solution

Tout d'abord, si vous ne spécifiez pas de includes, le plug-in jar Maven utilisera **/** comme modèle par défaut (voir o.a.m.p.j.AbstractJarMojo ), à savoir qu'il comprendra tout. Si vous remplacez ce modèle par défaut, le plug-in comprendra évidemment que ce que vous lui dites d'inclure.

En second lieu, l'analyse du répertoire se fait à la fin par le o.c.p.u.DirectoryScanner et c'est ce que la javadoc de la classe dit:

 * The idea is simple. A given directory is recursively scanned for all files
 * and directories. Each file/directory is matched against a set of selectors,
 * including special support for matching against filenames with include and
 * and exclude patterns. Only files/directories which match at least one
 * pattern of the include pattern list or other file selector, and don't match
 * any pattern of the exclude pattern list or fail to match against a required
 * selector will be placed in the list of files/directories found.

Alors, avec votre jeu actuel des modèles de includes et excludes, seulement UN fichier correspondra au modèle d'inclusion, mais aussi correspondre à un modèle d'exclusion et ne sera donc pas sélectionné et vous obtenez une archive presque vide ( avec juste le manifeste par défaut, voir o.a.m.p.j.AbstractJarMojo#createArchive() ).

Je ne peux pas vous donner la solution exacte ici, mais vous devez clairement repenser la façon d'inclure / exclure des fichiers (par exemple ajouter des modèles de includes, retirez <exclude>somedir/**</exclude>, ou utiliser includes uniquement, ou utilisez excludes uniquement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top