0

m2e プラグインを使用した Eclipse の Maven プロジェクトがあります。依存関係の階層は、以下に示すように、3.0.0.RELEASE の代わりに Spring 3.2.3 を省略していることを示しています。それ以外の場合はどうすればよいですか?古いバージョンを省略して最新のものにするべきではありませんか?

ここに画像の説明を入力

4

1 に答える 1

3

Maven はnearest wins strategy、依存関係の競合を解決しながらという原則に基づいて動作します。つまり、ツリー内でより近いバージョンを見つけた場合、そのバージョンを取得し、他のバージョンを無視します。

あなたの場合、実行できるとき-

mvn dependency:tree -Dverbose -Dincludes=spring-aop

ツリー階層では、バージョン 3.0.0 がバージョン 3.2.3 と比較して早くなっていることがわかります。そのため、依存関係を解決するためにバージョン 3.0.0 を使用しています。

解決策 :この種の問題に対する推奨される解決策は、親の pom.xml ファイルで適切な依存関係を管理することです。あなたの場合のように、次のようなものを持つことができます:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>3.2.3</version>
      </dependency>
   <dependencies>
  </dependencyManagement>

Maven が のバージョンを解決しようとするたびにspring-aop、常に依存関係管理を参照し、 で定義されたバージョンを使用しdependencyManagementます。

詳細については、私のブログでここを参照できます。maven が依存関係の競合を解決する方法

于 2013-08-02T06:30:59.123 に答える