6

EclipseWTPによって作成されたTomcatデプロイメントプロセスで奇妙な動作が発生します。Eclipse 3.7(Indigo)、WTP 3.3、 m2eclipseプラグインなし、Java 1.6、Tomcat5.5を使用しています。

私のアプリケーションは、依存関係として他のいくつかのプロジェクトと、いくつかのサードパーティの依存関係を持つWebアプリケーションです。私のプロジェクトはMavenによって管理されており、このツールを使用してアプリケーションをビルドすると、すべてが正常に機能します。

Eclipseを使用してプロジェクトで作業するには、実行mvn eclipse:clean eclipse:eclipseしてから、プロジェクトをIDEにインポートします。

このWebアプリケーションをTomcat5.5サーバー(このサーバーはEclipseによって管理されています)にデプロイしたいときに問題が発生します。新しいTomcatサーバーを作成し、その中にmy-project-portalアプリケーションをデプロイすると、 my-project-xxxの依存関係と、いくつかのサードパーティの依存関係(定義されている数百のうち約9つ)のみが追加されます。私の同僚のデスクトップの1つ(彼はEclipse 3.5を使用しています)では、サードパーティの依存関係はまったくデプロイされておらず、my-project-xxxJARだけがデプロイされています...

ただし、Webアプリプロジェクトのプロパティ、[Javaビルドパス]> [ライブラリ] 、または[デプロイメントアセンブリ]を見ると、依存関係のリストは正しく完全です。

ノート

古いEclipse(3.3、WTP 3.1を使用)でいくつかのテストを行いましたが、展開の問題は発生していません。ただし、このWTPはまだ「JavaEE Modules Dependencies」を使用していましたが、これは最新のWTPバージョンには当てはまりません。

これまでは、mvn eclipse:eclipseすべての依存関係(推移的なものを含む)をにコピーするカスタムMavenプラグインを使用していましmy-webapp-project/WebContent/WEB-INF/libた。そうすることで、Eclipseはこれらの依存関係のコンテンツを自動的にデプロイし、Tomcatサーバーのすべての依存関係を取得しました。

質問

  • 私のプロセスの何が問題になっていますか?
  • WEB-INF/libディレクトリ内のすべての依存関係を本当にコピーする必要がありますか?
  • Eclipseを使用してTomcatサーバーにWebアプリケーションをデプロイする場合の通常の手順は何ですか?

実行後のEclipse構成ファイルの抜粋を次に示しますmvn eclipse:eclipse

.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src/main/java"/>
    <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/asm/asm/2.2.2/asm-2.2.2.jar" sourcepath="M2_REPO/asm/asm/2.2.2/asm-2.2.2-sources.jar"/>
    <classpathentry kind="src" path="/my-project-business"/>
    ...
    <classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
</classpath>

.settings / org.eclipse.wst.common.component

<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="my-project-portal">
    <property name="context-root" value="my-project-portal"/>
    <wb-resource deploy-path="/" source-path="/WebContent"/>
    <property name="java-output-path" value="/WebContent/WEB-INF/classes"/>
    <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    ...
    <dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/my-project-business/my-project-business">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
  </wb-module>
</project-modules>
4

1 に答える 1

0

次の理由により、構成に問題があると思います。

  • プロジェクトが Maven によって管理されている場合、このツールに必要な依存関係を「.classpath」に設定する必要はありません。たとえば、別のライブラリが 1 つ必要な場合やライブラリのバージョンを変更した場合は、あなたのEclipseプロジェクトなど。あなたの「org.eclipse.wst.common.component」ファイルの同上。

@stivloが言うように、m2eclipseのWTPサポートをインストールする必要があると思います。もちろん、m2eclipseをインストールしてプロジェクト構成を確認してください。これらのファイルで定義されているすべての依存関係を削除する必要があるからです。

現時点では、/WEB-INF/lib ディレクトリにすべての依存関係をコピーすることはありません。これらのディレクトリを監視する必要がないからです。たとえば、Tomcat を起動する必要がある場合、m2eclipse プラグインはすべてのライブラリと相違点 (つまり、静的ファイル、クラス、リソース ファイルなど) を関連する内部 Eclipse ディレクトリに自動的に展開します。それだけで、サーバーはコンテキストで起動します。 、必要なすべてのファイルを含む。便宜上、Eclipse に関連するプラグインを常に使用しています。

于 2011-09-12T22:45:57.680 に答える