maven2: исключение каталога из WAR - PullRequest
43 голосов
/ 20 сентября 2010

Я пытался на этом исключить весь каталог ($ {basedir} / src / main / webapp / webscripts) из моего файла WAR, но это не удалось. Что не так?

это не работает:

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

это тоже:

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

Кто-нибудь может помочь?

Ответы [ 5 ]

87 голосов
/ 20 сентября 2010

Оба ваших решения не помогут, поскольку они добавят дополнительный ресурс, который затем будет деактивирован.Исходная папка веб-приложения копируется по умолчанию, без механизма ресурсов.

Механизм отключения части этого через параметр <warSourceExcludes>, например:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>webscripts/**</warSourceExcludes>
    </configuration>
</plugin>
31 голосов
/ 24 января 2012

warSourceExcludes , кажется, не был просто переименован packagingExcludes .

warSourceExcludes : список токенов, разделенных запятыми, которые нужно исключить при копировании содержимого warSourceDirectory.

packagingExcludes : Список токенов, разделенных запятыми, которые необходимо исключить из WAR перед упаковкой. Эта опция может быть использована для реализации тонкий вариант использования WAR.

Существует большая разница: с packagingExclude , токены полностью исключаются из окончательного файла войны. При warSourceExcludes токены просто игнорируются при копировании каталога war в файл war. В результате, если токены присутствуют, например, в webappDirectory , они не будут игнорироваться при использовании warSourceExclude , но будут при использовании packagingExclude .

И пример рабочего синтаксиса:

<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
6 голосов
/ 09 июня 2011

В версии 2.1-alpha-1 это было неправильно названо warSourceExcludes.Правильный параметр: packagingExclude

Пример использования (исключая WEB-INF / statics / folder из 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>
4 голосов
/ 13 апреля 2018

Project Structure

Inorder для удаления исходных файлов. Я использовал приведенную ниже конфигурацию в 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>
1 голос
/ 11 декабря 2014

Был сценарий, в котором мне пришлось исключить две папки, которые могли бы соответствовать *scripts, и они были в папке ресурсов.Первая путаница заключалась в том, предоставлять ли значение исключения как src/main/resources/*scripts или как WEB-INF/classes/*scripts, то есть структуру до или после компиляции.

Было очень важно предоставить /**, чтобы получить весь каталог, исключаемый извоенный файл.В моем случае, *scripts/**.

Вот окончательная конфигурация, которая сработала:

    <packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>
...