150

私は Tomcat で Intellij Ultimate を実行しており、戦争を展開しています。Tomcat の webapp ディレクトリにすべて正常にデプロイされます。

xhtml ファイルなどのファイルを変更した場合、Tomcat がその変更を自動的に取得する方法はありますか? 現時点では、Intellij からファイルをコピーし、それを tomcat Web アプリ ディレクトリ内のディレクトリにコピーする必要があります。再コンパイルが必要な特定のファイルがあることは知っていますが、xhtml はその 1 つではありません。

4

6 に答える 6

302

IntelliJ IDEA で war を展開する場合、これは実行できません。ただし、爆発戦を展開すれば可能です。アイデアでは:

  1. Tomcat の実行 / デバッグ構成を開きます (実行 > 構成の編集)
  2. [展開] タブに移動します。
  3. 「Deploy at Server Startup」セクションで、アーティファクトを削除します (存在する場合)。my-webapp-name:war
  4. 追加アイコンをクリックし、「アーティファクト」を選択してから選択しますmy-webapp-name:war exploded
  5. [OK] をクリックします ([デプロイするアーティファクトの選択] ダイアログで)。
  6. 実行/デバッグ構成ウィンドウで、[サーバー] タブを選択します。
  7. そのタブの中央で、「フレーム非アクティブ化」設定を「リソースの更新」または「クラスとリソースの更新」に変更します。
    • リソースの更新:変更されたすべてのリソース (つまり、クラス以外のすべてのアプリケーション コンポーネント) が更新されます。
    • クラスとリソースの更新:変更されたすべてのリソースが更新されます。変更されたクラスは再コンパイルされます。実際のクラスが更新されるかどうかは、機能 Web サーバーによって異なります。思い出すと、Tomcat は html/xhtml および jsp ファイルをリロードしますが、JSP またはサーブレットが使用するサーブレットまたはクラスはリロードしません。そのために動的クラスローダーを使用するには、Tomcat を変更する必要があります。
  8. 上記で選択したアクションに「 On 'update' 」アクションを設定することもできます。
    • これにより、実行ウィンドウで更新更新アイコンアイコン (またはCtrl+ )を押したときに何が起こるかが決まりました。F10
    • 「ダイアログを表示」は、更新アイコンを押すたびにIDEAがプロンプトを表示するかどうかを決定します
  9. [OK] をクリックします。

変更を加えるたびに、IDEA のフレームが非アクティブ化される (つまり、フォーカスが失われる) と、IDEA は変更されたファイルを再デプロイします。これには 1 ~ 2 秒かかります。IDEA の下部ステータス バーに表示されます。明らかに。新しいファイルをフェッチするために、Web ブラウザーを更新する必要があります (もちろん、フェッチのような ajax の自動更新がページにある場合を除きます)。

Tomcat との適切な組み合わせは、"On frame deactivation" を "Update Resources" に設定し、"On 'update' アクションを "Redeploy" または "Restart Server" に設定することです。これにより、フレームの非アクティブ化によって静的ページをすばやく更新できます。 「更新」アクションによって更新されたクラス。

ZeroTurnaround という会社は、動的なクラスローダー ソリューションであるJRebelを販売しています。彼らはまた、非常に優れた主題に関する5部構成のシリーズを持っています.

于 2013-10-26T16:35:42.803 に答える
27

スクリーンショットを使用して一連のアクションについて説明します。

  1. Tomcat の実行 / デバッグ構成を開きます (実行 > 構成の編集)。

ここに画像の説明を入力

  1. 追加アイコンをクリックし、「アーティファクト」を選択してから次を選択しますpizza_mvc:war explodedここに画像の説明を入力

  2. 「On update action」と「On frame diactivation」を変更します。 ここに画像の説明を入力

  3. リソースを更新するたびに、<Ctrl> + F10

于 2015-09-20T12:15:16.830 に答える
12

クラスとリソースを更新する場合は、Tomcatデバッグ モードで実行します。このモードでは、 IntelliJは問題なくクラスとリソースを更新します (ホット スワップ)。

同じ問題が発生しました。「実行モード」で実行しているため、IntelliJはプロジェクトを更新しませんでした。デバッグ モードで実行してCtrl+を押すとF10、クラスとリソースが更新されます。

于 2016-01-18T20:58:26.543 に答える