回答:
IntelliJ IDEAで戦争を展開する場合、これは実行できません。ただし、爆発戦争を展開する場合は可能です。IDEAの場合:
my-webapp-name:war
my-webapp-name:war exploded
これで、変更を加えるたびに、IDEAのフレームが非アクティブ化される(つまり、フォーカスを失う)と、変更されたファイルがIDEAによって再デプロイされます。これには1、2秒かかります。IDEAの下のステータスバーに表示されます。明らかに。新しいファイルをフェッチするために、Webブラウザーを更新する必要があります(もちろん、ページにfetchのようなajaxの自動更新がある場合は除きます)。
Tomcatとの適切な組み合わせは、「On frame deactivation」を「Update Resources」に設定し、「On 'update」アクションを「Redeploy」または「Restart Server」に設定することです。これにより、静的ページをフレームの非アクティブ化によってすばやく更新できます。 「更新」アクションによって更新されたクラス。
ZeroTurnaroundという名前の会社が、動的クラスローダーソリューションであるJRebelを販売しています。彼らはまた、非常に良い主題についての5つのパートシリーズを持っています。
Error: Artifact 'my-webapp-name:war exploded' has invalid extension
修正方法は?
クラスとリソースを更新する場合は、Tomcatをデバッグモードで実行します。このモードではIntelliJは問題なくクラスとリソースを更新します(ホットスワップ)。
同じ問題を得た。「実行モード」で実行しているため、IntelliJはプロジェクトを更新しませんでした。デバッグモードで実行してCtrl+ を押すとF10、クラスとリソースが更新されます。
私はもっと良い方法を見つけました。
でEclipseの我々は自動的にビルド、コンパイル+リロード静的なファイルを持っています。実際、静的ファイルはsrc / main / webappから直接提供されます。
IntelliJの代わりから直接提供のsrc /メイン/ webアプリ、あなたのコピーを持つことになりますたターゲットで作成したフォルダがあり、SRC /メイン/ webappのと、他のコンテキスト関連の... WEB-INF /クラス/ libに。
ターゲットの代わりに展開されたアーティファクトの出力をsrc / main / webappに置くと、ソースファイルが上書きされず、直接提供されます。ヒットする必要はありません - リソースの更新/リソースとクラスの更新
IntelliJで行う必要があるのは
この後、IntelliJの外部から静的ファイルを変更するジョブがある場合、IntelliJおよびUpdate Resourcesに移動せずにすぐに変更が表示されます。クラスの場合、保存するマクロがあり、コンパイルします(注:Compile /再コンパイル:cmd + shift + F9 / cmd + F9-複数のエディターを開いている場合、ダーティエディターがダーティではないことがわかり、変更(クラス)が再ロードされます)
これは、展開されたwarフォルダーをデプロイし、ホットリロードを有効にして、Tomcatをデバッグモードで起動した場合にのみ可能です。
これらはこれを達成するためのステップです。