web-dev-qa-db-ja.com

EclipseからTomcatでMavenプロジェクトを実行する方法

マルチレベルのMavenプロジェクトを実行しています。 WARとしてパッケージ化されたwebappsがあり、これはJARファイルとしてパッケージ化されたコンポーネントに依存します

私が行うコード変更のほとんどは、それらのJARファイルに属します。

変更をテストするには、JARとWARを再パッケージ化し、Tomcatで外部にデプロイする必要があります。

Sysdeo-Tomcat-maven-Eclipseプラグインを使用してみましたが、期待どおりに機能しませんでした。

誰かがこの問題の解決策を持っているかどうかアドバイスしてください

ありがとうガウラヴ

40
Gaurav Madan

Maven Eclipse Integrationプラグインの使用

問題が発生した場合、コマンドラインツールmvnを使用してデバッグすると便利です。経験則として、エラーのないコマンドラインでビルドする場合は、Eclipseで実行できます(ただし、Tomcatにも問題があるため、作業ディレクトリをクリーンにし、キャッシュを時々クリアする必要があります)。

それ以外は、Maven Eclipse Integrationプラグインの使用をお勧めします! Sonatypesプラグインリポジトリのバージョンを使用します http://m2Eclipse.sonatype.org/sites/m2e 。 Eclipseリポジトリには新しい統合がありますが、動作が異なり、その使用をまだ調査する時間がありません。

プロジェクトがモジュール式の場合、ルートプロジェクトを単純なプロジェクトとして設定すると役立つ場合があります(no Java、no Java EE)。その後、サブプロジェクトをインポートします。 projects as simple Java projects(再びJava EE)。依存関係管理をアクティブにし、プロジェクトを通じてビルドターゲットを実行できます。

Import modules

ターゲットプロジェクトで必要なサブモジュールのみを依存関係によって選択する必要があります。

Select dependencies to include as sub projects

Warファイルをビルドするプロジェクトの場合、Java eeのファセットをアクティブにし、追加の構成が利用可能でコンテキストルートを構成します(これは一度だけ実行でき、オプションがスクリーンショットですので、正しく行ってください)。

Select your decired facets

次に、フェイクテッドプロジェクトの展開アセンブリをセットアップします。すべての兄弟プロジェクト(ワークスペースでアクティブ)を展開アセンブリに追加する必要があります。また、展開アセンブリにmaven依存関係ビルドパスエントリを追加する必要があります。これが設定されたら、Run on serverディレクティブを使用してWebアプリを起動できます。

Setup deployment Assembly

Mavenプロジェクトをコーディングするときは、常に純粋なJavaモードにとどまると便利です。Eclipseのスマートビューは、舞台裏で何が起こるかを隠しているだけです。 !

38
Martin

Eclipse webtoolsプラグインを使用し、そこからTomcatを実行します。 jarも公開する再公開メソッドがあります(そうでない場合は、ディレクトリを消去して再公開するだけです)。

Pomファイルには、webtoolsが自動的にサポートされるように、次の行が必要です。

<build>
    ...
    <plugins>
        <plugin>
            <artifactId>maven-Eclipse-plugin</artifactId>
            <configuration>
                <wtpversion>1.5</wtpversion>
                ...
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build> 
10

Maven Eclipse IntegrationプラグインとWeb Runnerを使用

Facatedプロジェクト(別の回答で既に説明されています)をセットアップし、最新のMaven Eclipse Integrationプラグインを使用します。これは、共同作業中のEclipseバージョンの更新サイトに配置する必要があります。私の場合、Indigo-http://download.Eclipse.org/releases/Indigo(/ Collaboration/Maven Integration for Eclipse)。

展開アセンブリのワークスペースの依存関係の更新で頻繁に失敗する組み込みサーバーの代替として(Tomcatの場合)Sonatype Web Application LauncherWebbyを使用することをお勧めしますこれは、Maven Jettyプラグインのmavenディレクティブjetty:runに似ています。プラグインは、プラグインM2e Webby-http://m2Eclipse.sonatype.org/sites/m2e-webby/のsonatypes更新サイトで見つけることができます。このプラグインをインストールすると、構成を実行し、{project}/target/m2e-webbyにある自動ビルドからweb-appを実行できます。

enter image description here

Servlet-apiのプロバイダーとして(デフォルトの)組み込みjettyコンテナーの1つを構成することをお勧めします。特定のランタイムをテストする必要がある場合は、サーバーのホームディレクトリを参照して適切なプロバイダーを選択することにより、外部コンテナーを簡単に構成できます。

私が遭遇した欠点は非常に小さなものです。

  • Webアプリケーションは手動でシャットダウンする必要があり、「再起動」はありません。
  • 各Webアプリケーションは個別のポートで実行する必要があり、コンテナインスタンスを共有しません。
2
Martin