У меня есть XML-файл (urlrewrite.xml), для которого требуется заполнитель свойства.Я включаю фильтрацию Maven для достижения этой цели.Это прекрасно работает для собранного WAR-файла.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
Проблема заключается в попытке запустить приложение в режиме разработки с помощью подключаемого модуля Maven-Jetty (плагин Maven Jetty) в качестве maven jetty: run.
Файл, о котором идет речь, urlrewrite.xml, находится в каталоге src / main / resources, и поэтому должен (и должен) оказаться в / WEB-INF / classes (или target / classes для maven jetty:run).
Конфигурация URLRewriteFilter указывает расположение файла конфигурации следующим образом:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/classes/urlrewrite.xml</param-value>
</init-param>
</filter>
Это будет работать во время развертывания.Однако, используя плагин Jetty Maven, URLRewrite умрет с NullPointerException, потому что он использует context.getResourceAsString ("/ WEB-INF / classes / urlrewrite.xml") для загрузки файла конфигурации.Jetty возвращает для этого значение null, поскольку при запуске приложения из рабочей области оно разрешает / WEB-INF / classes / ... в src / main / webapp / WEB-INF / ....Файл не существует там, потому что WAR еще не был собран.Вместо этого ему следует извлечь ресурс из target / classes / urlrewrite.xml.
Если это неясно для вас, то вы, вероятно, не сможете ответить на этот вопрос, поскольку я подозреваю, что вам понадобится Jettyгуру, чтобы найти обходной путь (подсказка: это вызов!).
Кто-нибудь знает способ обойти это?Я также попробовал следующие обходные пути, чтобы узнать о них:
- Поместите urlrewrite.xml в новый каталог src / main / webResources и добавьте его в подключаемый модуль maven war и включите фильтрацию.Это скопирует его содержимое в соответствующее место при упаковке WAR, но не сделает его доступным для причала: запустите
- Некоторые другие хаки, которые я даже не могу вспомнить ... (обновлю, если я это сделаю)
Итак, maven-jetty-plugin необходимо, чтобы файл находился в каталоге src / main / resources / webapp / , вставьте путь и имя файла , чтобы он был доступен для maven jetty: run command ...
Спасибо за помощь ...
С уважением, Ллойд Форс