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) の最新の更新プログラムを使用しています。