私はSTS 2.9.1(Eclipse 3.7.2でビルド)とSTS(v1.0.200.20111228-1245)でバンドルされたm2eプラグインを使用しています。
いくつかのモジュールが含まれているEclipseプロジェクトの依存関係が欠落しているか、どうやったらうまくいくか分かりません。EclipseマルチモジュールプロジェクトにMaven依存関係がありません
これはmavenプロジェクトです。
私のプロジェクト>プロパティ> Javaビルドパス>ライブラリでは "Maven Dependencies"ライブラリがありますが、それは空です(それは問題です)。
メインのPOMには依存関係はありませんが、いくつかのモジュールが宣言されています。 モジュールのPOMに依存関係を追加しても、それが "Maven Dependencies"ライブラリに追加されず(私の予想どおり)、Eclipseにソースファイルのエラーを表示します。
メインPOMに依存関係を追加すると、 "MD" libに追加されますが、もちろん、私はすべてのモジュールの依存関係をメインPOMに追加したくないだけです。ビルド・パスへの単一依存性は、適切でも実用的でもないようです。
私が試した:
- プロジェクト>クリーン、
- のMaven>アップデートの依存関係、
- Mavenは>プロジェクトの構成を更新し、
- チェックボックスのチェックを外す:プロジェクト]> [プロパティ]> [Mavenは>解決Workspaceプロジェクトからの依存関係。
上記のうちどれもトリックを行っていないようです。
例:
簡体プロジェクト構造:
- simple.project
- ...
- サンプルモジュール
- ...
- の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 /サンプルモジュール/ 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>
あなたのPOMがなければ、私はあなたを助けることができません。関連するセクションを貼り付けてください。このエラーはEclipseにも表示されます。 (私はあなたがm2e 1.0以降を使用していると仮定しています) –
私のオリジナルの投稿を編集して、私の問題のより良い説明を提供しました。 – efesjan
Eclipseに表示されるエラーは無関係です。それらは、私のコードで参照されているいくつかのクラスがクラスパスから欠落しているという基本的なエラーです(私が期待したように "MD"ライブラリに追加されていないためです)。 – efesjan