2016-02-23 69 views
0

我注意到项目的poms中有一些图案。有这样的依赖关系图:你的项目A - >其他项目B - > B的依赖项目C.项目B被声明为A的pom中的依赖项,而B的依赖项C从B中排除并重新声明为项目A.如果Maven文档公开说它需要“最近”的依赖项,那么如果直接声明它,那么Maven会使用该版本而不是任何可传递的版本,这种排除的意义何在?排除依赖关系的依赖关系并重新声明它的意义是什么?

回答

0

您通常会这样做来更改依赖项的版本或范围。 因此,您可能会将依赖关系从依赖关系排除到B,这会导致您不依赖于C.现在,您可以使用另一个版本向A中的C添加直接依赖关系。

文档仍然是正确的,每个工件都应该声明它直接需要的东西。但在发生冲突的情况下,上述模式就是救援。

+0

如果发生冲突,“最接近”的依赖关系会胜出,这就是文档所说的。只要将它声明为顶级依赖项,maven就应该使用该版本,而不管传递依赖项。那么,为什么你需要排除它呢? – MaxNevermind