Как исключить определенные ресурсы из файла 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 и попробовал другие конфигурации без успеха.
Есть идеи, какую магию мне нужно здесь делать? Заранее спасибо.
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