web-dev-qa-db-fra.com

maven2: exclusion du répertoire de WAR

J'ai essayé this d'exclure tout le répertoire ($ {basedir}/src/main/webapp/webscripts) de mon fichier WAR mais il a échoué. Qu'est-ce qui ne va pas?

cela ne fonctionne pas:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp/webscripts</directory>
       <excludes>
        <exclude>**/*.*</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

cela aussi:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp</directory>
       <excludes>
        <exclude>**/webscripts</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

Quelqu'un peut-il aider?

44
pls

Vos deux solutions n'aideraient pas, car elles ajouteraient une ressource supplémentaire qui est ensuite désactivée. Le dossier source webapp est copié par défaut, sans le mécanisme de ressources.

Le mécanisme pour désactiver une partie de cela est via le <warSourceExcludes> paramètre, comme ceci:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>webscripts/**</warSourceExcludes>
    </configuration>
</plugin>
88
Sean Patrick Floyd

warSourceExcludes ne semble pas avoir été simplement renommé packagingExcludes.

warSourceExcludes: La liste de jetons séparés par des virgules à exclure lors de la copie du contenu de warSourceDirectory.

packagingExcludes: La liste de jetons séparés par des virgules à exclure du WAR avant l'emballage. Cette option peut être utilisée pour implémenter le skinny WAR use case.

Il y a une grande différence: avec packagingExcludes, les jetons sont complètement exclus du fichier de guerre final. Avec warSourceExcludes, les jetons sont simplement ignorés lors de la copie du répertoire war dans le fichier war. Par conséquent, si les jetons sont présents dans webappDirectory par exemple, ils ne seront pas ignorés lors de l'utilisation warSourceExcludes mais le seront lors de l'utilisation packagingExcludes .

Et un exemple de syntaxe de travail:

<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
31
Thomas

Dans la version 2.1-alpha-1, cela s'appelait incorrectement warSourceExcludes. Le bon paramètre est packagingExcludes

Exemple d'utilisation (exclut WEB-INF/statics/folder de WAR):

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <warName>searchservice-web</warName>
        <packagingExcludes>WEB-INF/statics/</packagingExcludes>
    </configuration>
</plugin>
6
igor

Project Structure

Pour supprimer les fichiers source, j'ai utilisé la configuration ci-dessous dans maven

 <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
      <packagingExcludes>
        eb-app/app/**,eb-app/node_modules/**,eb-app/public/**,eb-app/server/**,eb-app/tests/**,eb-app/tmp/**,eb-app/vendor/**,eb-app/*
      </packagingExcludes>
    </configuration>
  </plugin>
4
Mani

J'ai eu un scénario où je devais exclure deux dossiers qui pouvaient correspondre à *scripts et ils étaient dans le dossier des ressources. La première confusion était de savoir s'il fallait fournir la valeur d'exclusion comme src/main/resources/*scripts ou comme WEB-INF/classes/*scripts, c'est-à-dire structure avant ou après compilation.

Était très important de fournir /** pour que le répertoire entier soit exclu du fichier war. Dans mon cas, *scripts/**.

Voici la configuration finale qui a fonctionné:

    <packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>
1
James Jithin