Question

En utilisant le plugin de guerre Maven, je produis WAR qui comprend le répertoire suivant:

META-INF
-- maven
   -- com.abc.def
      -- myServlet
         -- pom.xml
         -- pom.properties

Dans la version, je veux exclure ce répertoire Maven. Comment puis-je faire?

J'ai essayé dernière maven-war-plugin (2,1-bêta-1), il a la configuration "packagingExcludes", mais il ne fonctionne pas comme je le souhaite.

Toutes les suggestions?

Était-ce utile?

La solution

Utilisation de l'emballage standard Maven vous ne pouvez pas omettre le fichier à ma connaissance. Il est cependant possible d'utiliser le maven-assembly-plugin pour construire la guerre , dans ce cas, vous avez le contrôle grain beaucoup plus fin sur le contenu de l'artefact, et peut omettre le pom.xml.

Cependant, je l'ai personnellement trouvé utile de garder le pom.xml à des fins de diagnostic. Il peut être utile de savoir ce qui a été utilisé pour construire et assembler la guerre en essayant de comprendre ce qui ne va pas avec votre application.

Mise à jour: un peu bizarre de synchronicité à la réponse de Pascal, je viens de lire sur le référence Archiveur et il semble que cela peut être fait en définissant la propriété de addMavenDescriptor false. Personnellement, je voudrais encore éviter de le faire pour les raisons exposées ci-dessus. Mais vous pouvez modifier votre acceptation à la réponse de Pascal.

Autres conseils

Je ne suis pas sûr, mais je pense que le Maven Archiveur (ce qui est principalement utilisé par des plugins pour manipuler l'emballage) peuvent être configurés pour y parvenir.

A propos de l'élément <addMavenDescriptor>, le Maven Référence dit:

  

Si l'archive généré contiendra ces deux fichiers Maven:

     
      
  • Le fichier pom, situé dans l'archive dans META-INF/maven/${groupId}/${artifactId}/pom.xml
  •   
  • Un fichier pom.properties, situé dans l'archive dans META-INF/maven/${groupId}/${artifactId}/pom.properties
  •   
     

La valeur par défaut est true.

Ainsi, un pom configuré comme celui-ci devrait faire l'affaire:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

Mettre un dossier META-INF dans un répertoire des ressources ou à la racine de votre répertoire source va détruire le contenu META-INF créé par Maven. Pour les fichiers WAR, mettre un META-INF dans votre répertoire de contenu Web fera la même chose.

Ajout d'un autre contenu que META-INF personnalisé remplacera ce Maven créer.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>pom.xml</warSourceExcludes>
    </configuration>
</plugin>

ou

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>here/there/everywhere/a/pom.xml</warSourceExcludes>
    </configuration>
</plugin>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top