2012-04-17 31 views
3

私は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> 
+0

あなたのPOMがなければ、私はあなたを助けることができません。関連するセクションを貼り付けてください。このエラーはEclipseにも表示されます。 (私はあなたがm2e 1.0以降を使用していると仮定しています) –

+0

私のオリジナルの投稿を編集して、私の問題のより良い説明を提供しました。 – efesjan

+0

Eclipseに表示されるエラーは無関係です。それらは、私のコードで参照されているいくつかのクラスがクラスパスから欠落しているという基本的なエラーです(私が期待したように "MD"ライブラリに追加されていないためです)。 – efesjan

答えて

1

これは動作しません。プロジェクトは、そのプロジェクトに依存している(dependencyを使用している)か、それを継承している(parentを使用している)場合にのみ、依存関係をインポートします。 module要素はaggregationのみを表します。

0

私が最初に気づくのは、あなたがpomの親に依存関係を定義していることです。そこに私は<dependencyManagement>see here the doc)の構造を見ることを期待するでしょう。このようにして、サブモジュールは共通の依存関係を適切に継承します。

これ以外にも、最も簡単なテストを開始できます。コマンドラインでmavenユーティリティからプロジェクトをコンパイルしてみてください。それがうまくいけば、Eclipseの設定に問題があります。それ以外の場合は、プロジェクトを定義した方法に問題があります。

プロジェクトがコマンドラインから正しくコンパイルされた場合は、他に何が起こっているのかを確認してください。

Maven Dependencies Libraryが空であるという事実は、Eclipse Mavenプラグインがあなたのpomsを適切に解決していないことを意味します。私は組み込みSTS mavenプラグインでかなり悪い経験をしました。 m2e 0.10バージョンにダウングレードしてください。 STS DashBoard/Find Updates/Installsを開く必要があります。m2e 0.10

これらのヒントのいくつかが役立つことを願っています。

+0

もちろん、あなたは ' 'の使い方については正しいですが、それはこの場合問題ではありません。プロジェクトはSTSとコマンドラインから正しくビルドされます。私はm2eのバージョンをダウングレードしようとしますが、FabricioがIDE/m2eの正しい動作であるという問題は正しいかもしれないとは思いませんか? – efesjan

1

問題は以前からありましたが、これはMavenプロジェクトの作成とMavenモジュールの追加を解決しました。プロジェクトを右クリックし、 "New> Project ...> Maven> Mavenモジュール"をクリックします。 その後、コードにエラーは表示されなくなりました。

関連する問題