使用Maven 2,如果它们可以传递,那么是否应该重新声明依赖关系?

时间:2011-01-13 16:16:36

标签: java maven-2

我经常发现自己处于顶级模块中需要依赖的情况下,因为它所依赖的模块之一具有相同的依赖性。

例如:

my-module
+- spring-core
   \- commons-logging

因此,假设我对传递依赖的版本感到满意,那么在commmons-logging上的依赖性是否应重新声明如下:

my-module
+- spring-core
|  \- commons-logging
\- commons logging  

或者我应该接受是否可以传递获得依赖?

2 个答案:

答案 0 :(得分:3)

IMO最好明确声明它,以便您可以控制您使用的确切版本。否则,每当更新另一个依赖项或引入一个看似无关的新依赖项时,所使用的实际版本都可以静默更改,这依赖于另一个库的较新版本。

答案 1 :(得分:1)

我通常会让他们过渡。

当您想要覆盖特定版本时,它可能有意义。例如,如果spring-core需要一个版本为1.25的commons-logging并且你需要(由于各种原因)1.26并且它们是兼容的,你应该忽略spring-core中的commons-logging依赖项并在你的pom中声明你的版本。

当两个人之间发生冲突时也一样。