プロパティプレースホルダを解決する必要があるXMLファイル(urlrewrite.xml)があります。これを実現するためにMavenフィルタリングを有効にします。これは、組み立てられたWARファイルでうまく動作します。実行:Mavenの桟橋などのmaven-桟橋 - プラグイン(Mavenの突堤プラグイン)を使用して開発モードでアプリケーションを実行しようとしたときMaven Jetty Pluginを使用しているときにリソースをフィルタリングする方法は?
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
問題があります。
urlrewrite.xmlのファイルはsrc/main/resourcesディレクトリにありますので、/ WEB-INF/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プラグインを使用すると、config.loadResourceAsString( "/ WEB-INF/classes/urlrewrite.xml")を使用して設定ファイルをロードするため、URLRewriteはNullPointerExceptionで終了します。 Jettyは、ワークスペースからアプリケーションを実行するときに、/ WEB-INF/classes/...をsrc/main/webapp/WEB-INF/...に解決するため、nullを返します。 WARはまだアセンブルされていないため、そこにファイルは存在しません。代わりに、target/classes/urlrewrite.xmlからリソースを取得する必要があります。
これはあなたには分かりませんが、この質問に答えることはできません。なぜなら、あなたが回避策を見つけ出すためには、ジェッティの教祖である必要があると思われるからです。
これを回避する方法を知っている人はいますか? SRC /メイン/ webResources、新しいディレクトリの下にurlrewrite.xml入れ
- とMavenの戦争のプラグインに<webReources>それを追加して、フィルタリングを有効にします。また、私は無駄を知るために、以下の回避策を試してみました。それは、WARがパッケージ化されているときにその内容を適切な場所にコピーしますが、それを桟橋のために利用することはできません:run
- 私は覚えていないことがあります...(私がしても更新されます)
、Mavenの-桟橋 - プラグインがMavenの桟橋のために利用できるようにするために、SRC /メイン/リソース/ webappの/ 挿入パスとファイル名下にあるファイルを必要とします:runコマンド...
ありがとうございます...
よろしくお願いします。 Lloyd F orce
+1解決策を文書化するために(網にはまだたくさんの未回答の質問があります)。これはあなたのために働く場合は、自己受け入れます。特別なリソースフィルタリングで '開発'メイヴンプロファイルを追加しようとしましたか?それは私が私の非桟橋ウェブプロジェクトのために取ったアプローチでした。 –
オプションで、maven-replacer-pluginを使用し、置き換えられたファイルを/ WEB-INF/classes/dirに書き出すようにします。 dir構造が存在することを確認します。 – Steven
Jetty 9を使用している場合は、org.mecache.java.util.resource.ResourceCollectionをorg.mortbay.resource.ResourceCollectionの代わりに – RockMeetHardplace