IntelliJ IDEA で war を展開する場合、これは実行できません。ただし、爆発戦を展開すれば可能です。アイデアでは:
- Tomcat の実行 / デバッグ構成を開きます (実行 > 構成の編集)
- [展開] タブに移動します。
- 「Deploy at Server Startup」セクションで、アーティファクトを削除します (存在する場合)。
my-webapp-name:war
- 追加アイコンをクリックし、「アーティファクト」を選択してから選択します
my-webapp-name:war exploded
- [OK] をクリックします ([デプロイするアーティファクトの選択] ダイアログで)。
- 実行/デバッグ構成ウィンドウで、[サーバー] タブを選択します。
- そのタブの中央で、「フレーム非アクティブ化」設定を「リソースの更新」または「クラスとリソースの更新」に変更します。
- リソースの更新:変更されたすべてのリソース (つまり、クラス以外のすべてのアプリケーション コンポーネント) が更新されます。
- クラスとリソースの更新:変更されたすべてのリソースが更新されます。変更されたクラスは再コンパイルされます。実際のクラスが更新されるかどうかは、機能 Web サーバーによって異なります。思い出すと、Tomcat は html/xhtml および jsp ファイルをリロードしますが、JSP またはサーブレットが使用するサーブレットまたはクラスはリロードしません。そのために動的クラスローダーを使用するには、Tomcat を変更する必要があります。
- 上記で選択したアクションに「 On 'update' 」アクションを設定することもできます。
- これにより、実行ウィンドウで更新アイコン (またはCtrl+ )を押したときに何が起こるかが決まりました。F10
- 「ダイアログを表示」は、更新アイコンを押すたびにIDEAがプロンプトを表示するかどうかを決定します
- [OK] をクリックします。
変更を加えるたびに、IDEA のフレームが非アクティブ化される (つまり、フォーカスが失われる) と、IDEA は変更されたファイルを再デプロイします。これには 1 ~ 2 秒かかります。IDEA の下部ステータス バーに表示されます。明らかに。新しいファイルをフェッチするために、Web ブラウザーを更新する必要があります (もちろん、フェッチのような ajax の自動更新がページにある場合を除きます)。
Tomcat との適切な組み合わせは、"On frame deactivation" を "Update Resources" に設定し、"On 'update' アクションを "Redeploy" または "Restart Server" に設定することです。これにより、フレームの非アクティブ化によって静的ページをすばやく更新できます。 「更新」アクションによって更新されたクラス。
ZeroTurnaround という会社は、動的なクラスローダー ソリューションであるJRebelを販売しています。彼らはまた、非常に優れた主題に関する5部構成のシリーズを持っています.