最近まで単一のMavenWARプロジェクトであったアプリケーションがあります。Tomcat Mavenプラグインを使用して、以下を使用してローカル開発者ワークステーションでアプリケーションを実行していました。
mvn tomcat:run
埋め込まれたTomcatインスタンスの実行中にJSPファイルを変更することができ、変更はWebブラウザーに問題なく表示されます。(プラグインのドキュメントから)tomcat:runゴールを使用すると、WARが動的Webアプリケーションとしてロードされるため、ソースでJSPファイルに加えられた変更は、再起動せずに実行時にTomcatによって取得されることを理解しています。
アプリケーションはかなり大きなサイズに達し、Webプロジェクト以外のいくつかの異なる場所で多数のクラスを再利用する必要があったため、コードベースをマルチモジュールのMavenプロジェクトにリファクタリングしました。構造は次のとおりです。
parent Maven POM
|
---- artifact1.jar
|
---- artifact2.jar -> depends on artifact1.jar
|
---- artifact3.jar -> depends on artifact1.jar
|
---- artifact4.jar -> depends on artifact2.jar and artifact3.jar
|
---- artifact5.war -> depends on artifact1.jar, artifact2.jar, artifact3.jar and artifact4.jar
リファクタリング後、プラグインがJARアーティファクトを検出できなかったため、プロジェクトのルートディレクトリからtomcat:runを使用してWARプロジェクトを実行できませんでした。そこで、tomcat:run-war-onlyプラグインの使用に切り替えました。これで、WARモジュールが正常に起動します。
ただし、ドキュメントから、run-warのみの目標はWARファイルをパッケージ化されたWebアプリケーションとして扱うようです。したがって、JSPファイルに加えた変更は、実行中に組み込みTomcatサーバーによって取得されなくなりました。JSPファイルを変更するたびに、サーバーを再起動する必要があります。
WARプロジェクトを動的Webアプリケーションとして実行するように設定されたこのマルチモジュールMavenで、少なくともJSPファイルへの変更が再起動せずにTomcatによって取得されるようにする方法はありますか?