Как исключить определенные ресурсы из файла maven war plugin war?



Мы уже некоторое время используем war:exploded, и я пытаюсь покончить с этим. Я добавил в свой pom следующее:



<resource>
<directory>src/main/webapp</directory>
</resource>


Это копирует файлы, такие как in src/main/webapp/keystore в target/classes/keystore, так что мой локальный UI launcher работает и видит все. Счет!



Однако, добавляя в список ресурсов, это означает, что те же файлы также отображаются в файле war как keystore (Правильно) и WEB-INF/classes/keystore (неправильно). Это также означает, что там есть каталог WEB-INF/classes/WEB-INF (бла). Я пытаюсь исключить файлы ресурсов из src/main/webapp resource, так как src/main/webapp/WEB-INF уже является ресурсом.



Я стараюсь специально не исключать keystore и другие файлы, так как мы добавляем/удаляем из этого списка получасто. Я попытался добавить следующее (и ряд других вариантов) в конфигурацию плагина war без результатов:



<webResources>
<resource>
<directory>src/main/webapp</directory>
<excludes>
<exclude>**</exclude>
</excludes>
</resource>
</webResources>


Я также прочитал ряд других вопросов SO, и я провел по крайней мере час, читая документы на странице плагина maven war и попробовал другие конфигурации без успеха.



Есть идеи, какую магию мне нужно здесь делать? Заранее спасибо.
715   3  

3 ответов:

Вам нужно

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <packagingExcludes>**/keystore</packagingExcludes>
    </configuration>
</plugin>

Также Смотрите

WarSourceExcludes работал на меня. например.Чтобы исключить папку JS и папка SCSS из моя война, я пробовал...

 <configuration>
   <warSourceExcludes>js/*.*,scss/*.*</warSourceExcludes>      
   <webResources>
     <resource>
     <directory>src/main/webapp</directory>
     <filtering>true</filtering>
        <includes>
            <include>WEB-INF/web.xml</include>
        </includes>
     </resource>
   </webResources>
</configuration>

Однако, добавляя в список ресурсов, это означает, что те же самые файлы также отображаются в файле war как keystore (правильно) и WEB-INF/classes/keystore (неправильно).

Я был не в состоянии заставить War-плагин должным образом исключить каталог webapp, в то же время разрешив каталог webapp/WEB-INF. Вместо того чтобы добавить в ПОМ следующее:

<!-- bad idea, this didn't work -->
<resource>
    <directory>src/main/webapp</directory>
</resource>

Я переключился на использование resources-плагина, чтобы иметь возможность копировать определенные ресурсы во время validate фаза:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/webapp</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/webapp</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Я сначала скопировал каталог webapp в target/classes, но это также, казалось, превратило его в результирующий файл войны, которого я пытался избежать. У меня такое чувство, что я мог бы решить эту проблему, если бы это было необходимо.

Вместо этого я решил скопировать файлы webapp в каталог target/webapp и изменить свою программу, чтобы искать ресурсы там:

String RESOURCE_BASE = "target/webapp";
System.setProperty("server.jetty.webapp.resourceBase", RESOURCE_BASE + "/");
System.setProperty("server.jetty.ssl.keystore", RESOURCE_BASE + "/keystore");
System.setProperty("server.jetty.ssl.truststore", RESOURCE_BASE + "/keystore");
...

Это, кажется, работает хорошо. Тестирование локально теперь работает (без войны-взорвался!!) а файлы такие не включенный дважды в итоговый файл войны. Кроме того, я добавил символическую ссылку во время выполнения из target/webapp/views/cms, чтобы указать на нашу иерархию CMS, которая находится в другом проекте.

Comments

    Ничего не найдено.