Подтвердить что ты не робот

Maven2: исключая каталог из WAR

Я попробовал this, чтобы исключить весь каталог ($ {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>

Помогает ли кто-нибудь?

4b9b3361

Ответ 1

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

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

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

Ответ 2

warSourceExcludes, похоже, не просто переименовали упаковкаExcludes.

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

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

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

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

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

Ответ 3

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

Пример использования (исключая WEB-INF/статику/папку из 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

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

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

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

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