Maven Webresourcesフィルタリングオンザフライ
-
23-10-2019 - |
質問
Maven-War-Pluginを使用して、Web-INFのリソースをフィルタリングしています。主にスタッフの静的なものは次のとおりです。
var url = ${contextRoot}/save.json;
また
<link href="static/css/layout-${buildNumber}.css"/>
すべてが素晴らしく機能します。私の問題は、開発の悪夢を生み出したことです。私は通常、ローカルのTomcatにホットデプロイを行い、私のIDEはターゲットディレクトリへのコピーの変更(保存)を処理します。しかし、それが起こったとき、私はファイルのリテラル$ {プロパティ}で、元々戦争プラグインによって置き換えられたものではなく、ファイルになります。変更ごとに再展開する必要がある代わりに、ビュー/静的リソースの変更をフライでテストすることをお勧めします。
Tomcatプラグインをめちゃくちゃにして実行しましたが、リソースフィルタリングが展開しない限り、リソースフィルタリングが発生しないことを使用したとき、その場合はホットスワップ機能を失います。
私はSpringを使用していますが、テーマを使用し、テーマのプロパティをフィルタリングし、それを使用して私の見解で値を置き換えることには問題ありません。しかし、JS/CSS/その他の静的なものはどうですか?
戦争プラグインを「オンザフライでフィルター」する方法はありますか?誰かが私がやろうとしていることをより良い方法を達成することを勧めることができますか?私はあまりにも長い間それを見てきて、この問題についてトンネルのビジョンを持っているように感じます。
解決 2
結局、私は同じ方法を保持しましたが、これを達成するためのアプローチを変更しました。
JavaScriptの場合、フィルタリングする必要があるものを1つの定数ファイルに入れます。
// Constants.js
var BASE_URL = '${contextRoot}';
この背後にある理由は、 Constants.js
ファイルが変更されることはほとんどなく、そのファイルがその場で再配置されるという問題を回避します。
私の他の例は使用していました ${buildNumber}
ブラウザリソースを避けるために、展開全体でキャッシュします。ビルド番号をクエリ文字列に追加することも同様に機能していることがわかりました。
<link href="static/css/layout.css?${buildNumber}"/>
他のヒント
M2EおよびM2E-WTPでEclipseを使用すると、オンザフライのWebリソースフィルタリングを取得できます。これはここで説明されています: https://community.jboss.org/en/tools/blog/2011/05/03/m2eclipse-wtp-0120-new-noteworthy
そしてそこにデモをしました: http://bit.ly/wgcd4j
このビデオでは、Maven Profile Management UIがJBoss Tools 3.3.0.Beta1(http://docs.jboss.org/tools/whatsnew/maven/maven/maven-news-3.3.0.beta1.htmlから来ていることに注意してください。 ))