1

Eclipse にインポートされた Maven Web プロジェクトがあります。Web プロジェクトが依存する別の Maven プロジェクト (jar ファイルを生成する) があります。

これらのプロジェクトは両方とも、コマンド ラインから実行すると正しく機能します。mvn パッケージは、web プロジェクトの maven リポジトリから依存する jar をプルする war ファイルを作成します。ライブラリに対して mvn パッケージを実行すると、有効な jar ファイルが作成されます。

ライブラリを Eclipse にインポートすると、m2e は Web プロジェクトがライブラリに依存していることを認識し、プロジェクトの一部を更新して、両方の Maven プロジェクトが単一の Eclipse ワークスペース内でホストされているという事実を利用します。Web プロジェクトの「Java ビルド パス」設定の「ライブラリ」タブの「Maven 依存関係」セクションで、ライブラリ jar ファイルが削除され、ライブラリ プロジェクトに置き換えられます。ライブラリが Eclipse で更新されると、Web プロジェクトは、ライブラリをインストール/デプロイしなくても、これらの変更を認識します。

この問題は、Eclipse で Web アプリケーションを実行しようとすると発生します。Eclipse は実際には Eclipse のライブラリーのバージョンに対して Web プロジェクトをビルドしているため、maven リポジトリーからライブラリー・ファイルをデプロイするのではなく、Eclipse のライブラリーの現在のバージョンのスナップショットである新しい jar ファイルを作成します。これはすべてうまくいきましたが、現在取り組んでいるプロジェクトでは、Eclipse が作成している jar ファイルに問題があります。ライブラリのクラス ファイルを挿入する代わりに、Maven プロジェクトの「src」ディレクトリを取り、それを jar ファイルとして圧縮しているようです。jar ファイルの内容は次のようになります。

-main
  -java
    -com
      -... *.java
  -resources
    -...
-test
  -java
    -com
      -... *.java

私はそれがもっと似ていると思うところ:

-com
  -... *.class

以前にこのタイプのプロジェクトをうまく使用したことがあるので、構成する必要があるものがあるかどうか、またはバグに遭遇しただけかどうかを把握しようとしています。

Eclipse Indigo (ビルド ID: 20120216-1857) で m2e (1.0.200.20111228-1245) の最新の更新プログラムを使用しています。

4

2 に答える 2

3

これが私が思いついた解決策です。

私の場合、図書館プロジェクトの「展開アセンブリ」のルールは引き続き守られているようです。

変更するには、ライブラリのプロパティ->配置アセンブリに移動します

私の場合、'/src'->'/'からのマッピングが含まれています。そのエントリを削除し、「/ target/classes」->「/」および「/src/ main /resources」->「/」からのマッピングに置き換えました。

そのマッピングを配置すると、jarファイルがデプロイされたときに、デプロイメントアセンブリで構成したものが正確に含まれていました。これにより、変更のたびにライブラリを明示的に再公開しなくても、Eclipseを引き続き使用できます。ただし、ライブラリが更新されたときにTomcatに自動再デプロイされないようです。ライブラリの変更を反映するには、Tomcatを手動で再起動する必要があります。

このプロジェクトで何が起こっているのかはまだ完全にはわかりません。同様の構造を持つ以前のプロジェクトがありますが、それらのプロジェクトでは、クラスファイルを明示的に含めるようにDeployment Assemblyが更新されていませんが、適切なjarファイルがまだデプロイされています。

于 2012-03-15T06:05:11.143 に答える
3

Eclipse では、「ワークスペースの解決」を無効にして、次の手順でローカルの Maven リポジトリから依存関係を直接使用することができます。

ワークスペースの解決を無効にする

  1. 日食内のプロジェクトを右クリックします
  2. コンテキストメニューから「Maven」を選択します。
  3. 「ワークスペースの解像度を無効にする」と表示されている場合は、有効になっていることを意味します。意図的にクリックして無効にします。その後、「ワークスペースの解像度を有効にする」と表示されますが、これは既に無効になっていることを意味します。

次の手順に従って、プロジェクト構成とその他の関連する依存関係を更新する必要がある場合があります。

プロジェクト構成の更新

  1. 日食内のプロジェクトを右クリックします
  2. コンテキストメニューから「Maven」を選択します。
  3. [プロジェクト構成の更新... ]をクリックします。
  4. Maven 依存関係の更新」ウィンドウが表示されます。
  5. 必要なプロジェクトを選択し、[OK] をクリックします。

依存関係を更新する

  1. 日食内のプロジェクトを右クリックします
  2. コンテキストメニューから「Maven」を選択します。
  3. 「*依存関係の更新」をクリックします
  4. Maven 依存関係の更新」ウィンドウが表示されます。
  5. 必要なプロジェクトを選択し、[OK] をクリックします。

関連する依存関係をワークスペースから直接使用しなくなったため、ローカルの Maven リポジトリから直接使用することに注意してください。次に、次のコマンド ラインを使用して、関連するすべてのアーティファクトをローカルの Maven リポジトリにインストールする必要があります。

mvn インストール

いずれにしても、次の手順で Eclipse 内のコンテキスト メニューを使用して実行できます。

  1. 日食内のプロジェクトを右クリックします
  2. 「 Run As」 ---> 「Maven Install 」を選択します。
于 2012-03-15T01:57:04.437 に答える