У меня есть XML-файл (urlrewrite.xml), для которого нужно разрешить заполнитель свойства. Для этого я включаю фильтрацию Maven. Это отлично работает для собранного файла WAR.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
Проблема заключается в том, что при попытке запустить приложение в режиме разработки с использованием maven-jetty-plugin (Maven Jetty Plugin) в качестве 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, чтобы найти обходной путь (подсказка: это проблема!).
Кто-нибудь знает способ обойти это? Я также пробовал следующие обходные пути, чтобы узнать о avail:
- Поместите urlrewrite.xml в новый каталог src / main / webResources и добавьте его в плагин maven war ‹webReources› и включите фильтрацию. Это скопирует его содержимое в соответствующее место при упаковке WAR, но не сделает его доступным для пристани: run
- Некоторые другие хаки, которые я даже не могу вспомнить ... (обновлю, если я запомню)
Таким образом, maven-jetty-plugin необходимо, чтобы файл находился в src / main / resources / webapp / вставьте путь и имя файла, чтобы он был доступен для maven jetty: команда запуска ...
Спасибо за помощь ...
С уважением, Lloyd Force