プロパティプレースホルダーを解決する必要があるXMLファイル(urlrewrite.xml)があります。これを実現するために、Mavenフィルタリングを有効にします。これは、アセンブルされたWARファイルに対して正常に機能します。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
問題は、maven jetty:runのように、maven-jetty-plugin(Maven Jettyプラグイン)を使用して開発モードでアプリケーションを実行しようとした場合です。
問題のファイルurlrewrite.xmlはsrc/main / resourcesディレクトリにあるため、最終的に/ WEB-INF / classes(またはmaven jetty:runの場合はtarget / classes)になります。
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は構成ファイルをロードするためにcontext.getResourceAsString( "/ WEB-INF / classes / urlrewrite.xml")を使用するため、NullPointerExceptionで終了します。Jettyは、ワークスペースからアプリケーションを実行すると/ WEB-INF / classes/...をsrc/main / webapp / WEB-INF / ...に解決するため、これに対してnullを返します。WARがまだアセンブルされていないため、ファイルはそこに存在しません。代わりに、target / classes/urlrewrite.xmlからリソースをプルする必要があります。
それがわかりにくい場合は、回避策を見つけるためにJettyの第一人者である必要があると思われるため、おそらくこの質問に答えることはできません(ヒント:それは挑戦です!)。
誰かがこれを回避する方法を知っていますか?また、アベイルズを知るために次の回避策を試しました。
- urlrewrite.xmlを新しいディレクトリsrc/main / webResourcesの下に置き、それをmaven warプラグイン<webReources>に追加して、フィルタリングを有効にします。これにより、WARがパッケージ化されたときにその内容が適切な場所にコピーされますが、jetty:runで使用できるようにはなりません。
- 思い出せない他のハック...(覚えていれば更新されます)
要約すると、maven-jetty-pluginは、maven jetty:runコマンドで使用できるようにするために、ファイルがsrc / main / resources /webapp/挿入パスとファイル名の下にある必要があります...
助けてくれてありがとう...
よろしくお願いいたします。ロイドフォース