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