TomcatでIntellij Ultimateを実行し、戦争を展開しています。すべてがTomcatのwebappディレクトリに正常にデプロイされます。
Xhtmlファイルのようなファイルを変更するとき、Tomcatがその変更を自動的に取得する方法はありますか?現時点では、intellijからファイルをコピーし、Tomcat webappディレクトリ内のディレクトリにコピーする必要があります。再コンパイルが必要な特定のファイルがあることは知っていますが、xhtmlはそれらの1つではありません。
IntelliJ IDEAで戦争を展開する場合、これは実行できません。ただし、expanded warを展開する場合、canになります。 IDEAの場合:
my-webapp-name:war
を削除します(存在する場合)my-webapp-name:war exploded
を選択しますこれで、変更を加えるときはいつでも、IDEAはIDEAのフレームが非アクティブ化された(つまり、フォーカスを失った)ときに変更されたファイルを再デプロイします。これには1〜2秒かかります。IDEAの下部のステータスバーに表示されます。明らかに。 Webブラウザーを更新して新しいファイルを取得する必要があります(もちろん、ページに取得のようなajaxの自動更新がある場合を除きます)。
Tomcatとの適切な組み合わせは、「On frame deactivation」を「Update Resources」に設定し、「On 'update」アクションを「Redeploy」または「Restart Server」に設定することです。 「更新」アクションを介して更新されたクラス。
ZeroTurnaroundという名前の会社は、動的クラスローダーソリューションである JRebel を販売しています。また、 テーマに関する5つのパートシリーズ もあり、これは非常に優れています。
クラスとリソースを更新する場合は、デバッグモードでTomcatを実行します。このモードでは、IntelliJクラスとリソースを問題なく更新します(ホットスワップ)。
同じ問題になりました。 IntelliJは、「実行モード」として実行するため、プロジェクトを更新しませんでした。 デバッグモードで実行して Ctrl+F10、クラスとリソースを更新します。
もっと良い方法を見つけました。
Eclipseでは、静的ファイルを自動的にビルド、コンパイル、リロードします。実際には、静的ファイルはsrc/main/webappから直接提供されます。
IntelliJでは、src/main/webappから直接提供する代わりに、ターゲットに作成されたフォルダーで、src/main/webappのコピーとその他のコンテキスト関連の.. web-inf /があります。クラス/ lib。
ターゲットの代わりに展開されたアーティファクトの出力をsrc/main/webappに配置すると、ソースファイルは上書きされず、直接提供されます、あなたはヒットする必要はありません-リソースの更新/リソースとクラスの更新
したがって、IntelliJで行う必要があるのは
この後、IntelliJの外部から静的ファイルを変更するジョブがある場合、IntelliJに移動せずにすぐに変更が表示され、リソースを更新します、およびクラス保存してコンパイルするマクロがあります(注:Compile/Recompileを押すこともできます:cmd + shift + F9/cmd + F9-開いているエディターが複数ある場合、ダーティー*エディターはダーティーではないことがわかります。変更(クラス)がリロードされます)