環境の前提
私は仮定します:
target/classes
コンパイルされたクラスのターゲット フォルダーです。
src/main/webapp
は、Web アプリケーションのコンテンツ フォルダーです。
Project > Build Automatically
オプションがチェックされています
配置ディレクトリ
Eclipse は、展開された WAR デプロイメントを使用しています。つまり、デプロイされたアプリケーションは、単一のファイル アーカイブではなく、フォルダーとしてデプロイされます。アプリケーション ファイルは、 から配置およびロードされ${workspace}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
ます。
出版
公開は、Web アプリケーションの組み立てと展開を担当する中心的なプロセスです。ローカル Tomcat について話すとき、これは「Web コンテンツ、コンパイルされたクラス、ライブラリなど」を配置ディレクトリ (のディレクトリ.metadata
) にコピーすることを意味します。
Eclipse は部分的な公開を行うことができます。つまり、単一のリソース (たとえば、一部の JSP) が変更されると、Eclipse はその単一のファイルのみを公開します。
デフォルトでは、一部のリソースが変更されると、発行プロセスが自動的に実行されます。これは、サーバー設定で変更できます (サーバービューでサーバー名をダブルクリックします)。
静的リソースの変更
変更する場合は、次のように言いますsrc/main/webapp/resources/myApp/css/main.css
。
- パブリッシュ時に、ファイルは展開フォルダーにコピーされます
- サーバークライアントはリソースをすぐに利用できます
JSPファイルの変更
JSP ファイルを変更する場合:
- パブリッシュ時に、ファイルは展開フォルダーにコピーされます
- Tomcat は JSP ファイルが変更されたことを認識し、再コンパイルします。
- 変更された JSP はコンテンツをレンダリングする準備ができています
Java ファイルの変更
Java ソース ファイルを変更する場合:
- ファイルはにコンパイルされます
target/classes
- パブリッシュ時に、ファイルは展開フォルダーにコピーされます
- Tomcatは、クラス ファイルが変更されたことを認識し、コンテキストをリロードします (つまり、Web アプリケーションが再起動されます)。
[モジュール] タブのサーバー設定で、自動リロード機能を無効にすることができます。自動リロードがなくても、実行中の JVM のコードを置き換えることができるホット スワップ機能を引き続き使用できます。これは、メソッド シグネチャが変更されていない場合にのみ可能です。
Java の変更のリロードに関して、より高度なソリューション (つまり、メソッド本体だけの変更に限定されない) が必要な場合は、JRebel (無料ではない) などのプロジェクトをチェックする必要があります。
クリーニング
デプロイされたアプリケーションが破損する可能性があります。完全にコンパイルおよび公開されたリソースを消去する場合は、次のことを行う必要があることに注意してください。
- コンパイルされたクラスを消去します (
Project > Clean...
-deletes target/classes
)
- デプロイされたファイルを消去します (
Server > Clean...
- デプロイ フォルダーを削除します) 。
- Tomcat の作業ディレクトリを消去します (
Server > Clean Tomcat Work Directory...
- コンパイル済みの JSP を削除します)。