STS (v1.0.200.20111228-1245) にバンドルされた m2e プラグインで STS 2.9.1 (Eclipse 3.7.2 でビルド) を使用しています。
複数のモジュールを含む Eclipse プロジェクトで依存関係が欠落しているという問題があります。または、それがどのように機能するかを完全に理解していない可能性があります。
それはmavenプロジェクトです。
[プロジェクト] > [プロパティ] > [Java ビルド パス] > [ライブラリ] に「Maven Dependencies」ライブラリがありますが、空です (これが問題です)。
メインの POM には依存関係はありませんが、いくつかのモジュールが宣言されています。モジュールの POM に依存関係を追加しても、「Maven Dependencies」ライブラリに追加されず (私の期待どおり)、ソース ファイルに Eclipse のエラーが表示されます。
メインの POM に依存関係を追加すると、「MD」ライブラリに追加されますが、もちろん、「MD」ライブラリにすべての依存関係を追加して、すべての依存関係を追加するためだけに、すべてのモジュールの依存関係をメインの POM に追加したくはありません。ビルドパスへの変更は正しくも実用的でもないようです。
私はもう試した:
- プロジェクト > クリーン、
- Maven > 依存関係の更新、
- Maven > プロジェクト構成の更新、
- チェックボックスのチェックを外します: [プロジェクト] > [プロパティ] > [Maven] > [ワークスペース プロジェクトから依存関係を解決]。
上記のどれもうまくいかないようです。
例:
簡素化されたプロジェクト構造:
- シンプルなプロジェクト
- ...
- サンプルモジュール
- ...
- pom.xml
- pom.xml
simple.project/pom.xml:
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>simple.project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sample-module</module>
</modules>
<dependencies>
<dependency><!-- This dependency is present in "MD" lib. -->
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
simple.project/sample-module/pom.xml:
<project ...>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>simple.project</artifactId>
<groupId>test</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>test</groupId>
<artifactId>sample-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency><!-- I've expected this dependency also to appear in "MD" lib. -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>