3

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>
4

3 に答える 3

1

動作するはずがありません。プロジェクトは、そのプロジェクトに依存する場合 ( を使用dependency)、またはプロジェクトから継承する場合( を使用) にのみ、別のプロジェクトから依存関係をインポートしparentます。module要素は集計のみを表します

于 2012-04-17T18:50:44.400 に答える
1

質問は昔からのものですが、Maven プロジェクトを作成して Maven モジュールを追加することで解決しました。プロジェクトを右クリックし、「新規 > プロジェクト... > Maven > Maven モジュール」をクリックします。その後、コードにエラーは表示されなくなりました。

于 2012-11-15T07:57:38.883 に答える
0

最初に目にするのは、pom 親で依存関係を定義していることです。<dependencyManagement>そこでは、 (here the doc を参照)構造が表示されると予想されます。このようにして、サブモジュールはこれらの共通の依存関係を適切に継承します。

それはさておき、最も簡単なテストから始めましょう。コマンド ラインで maven ユーティリティからプロジェクトをコンパイルしてみてください。それが機能する場合は、Eclipse 構成に問題があります。そうでない場合、問題はプロジェクトの定義方法にあります。

プロジェクトがコマンド ラインから適切にコンパイルされる場合は、他に何が起こるか見てみましょう。

Maven 依存関係ライブラリが空であるという事実は、Eclipse Maven プラグインが pom を適切に解決していないことを意味します。組み込みの STS maven プラグインでかなり悪い経験をしました。m2e 0.10 バージョンにダウングレードしてみてください。STS ダッシュボードを開き、更新を検索し、m2e 0.10 をインストールするだけです。

これらのヒントがあなたのお役に立てば幸いです。

于 2012-04-17T20:44:06.903 に答える