Maven 排除依赖关系有什么意义;s依赖项并重新声明它?

Maven 排除依赖关系有什么意义;s依赖项并重新声明它?,maven,transitive-dependency,Maven,Transitive Dependency,我注意到项目的POM中有一些模式。有这样一个依赖关系图:您的项目a->其他项目B->B的依赖关系项目C。项目B在a的pom中声明为依赖关系,B的依赖关系C从B中排除,并重新声明为项目a的直接依赖关系。如果Maven docs公开表示它采用“最近的”依赖关系,那么这种排除有什么意义,因此,如果您直接声明它,那么Maven将使用该版本而不是任何可传递的版本?您通常这样做是为了更改依赖项的版本或范围。 因此,您可以将对C的依赖项从对B的依赖项中排除,这使得您对C没有依赖项。现在,您使用另一个版本向a中

我注意到项目的POM中有一些模式。有这样一个依赖关系图:您的项目a->其他项目B->B的依赖关系项目C。项目B在a的pom中声明为依赖关系,B的依赖关系C从B中排除,并重新声明为项目a的直接依赖关系。如果Maven docs公开表示它采用“最近的”依赖关系,那么这种排除有什么意义,因此,如果您直接声明它,那么Maven将使用该版本而不是任何可传递的版本?

您通常这样做是为了更改依赖项的版本或范围。 因此,您可以将对C的依赖项从对B的依赖项中排除,这使得您对C没有依赖项。现在,您使用另一个版本向a中的C添加了一个直接依赖项

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

在发生冲突的情况下,“最近的”依赖关系获胜,这就是docs所说的。只需将其声明为顶级依赖项,maven就应该完全使用该版本,而不考虑可传递依赖项。那你为什么要排除它呢?