7

最近まで単一の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によって取得されるようにする方法はありますか?

4

2 に答える 2

3

最初にmvninstallを実行してから、

mvn -pl artifact5 tomcat:run 
于 2012-11-07T11:50:10.997 に答える
3

まず、Apacheにある新しいバージョンのtomcatプラグインを使用します。http://tomcat.apache.org/maven-plugin-2.0/を参照してください。

次に、maven3を使用する場合は、上からtomcat6 / tomcat7:runを使用するだけです。モジュールのすべてのクラスがwebappクラスローダーに追加されます(最初にすべてのjarをインストールする必要がないため、一部のiOSが保存されます!)http://tomcat.apache.org/maven-plugin-2.0/run-mojo-を参照してください。 features.html

HTH!

于 2012-11-08T09:56:31.620 に答える