2017-09-30 78 views
0

在maven中,dependencyManagement可用于解决依赖冲突问题。如何在Maven传递中创建依赖管理

现在我正在开发一个通用的lib项目,它将被许多其他项目使用。我想使用dependencyManagement解决所有依赖冲突,以便其他项目不需要处理它。

然而,当我添加公共LIB其他项目的依赖,我发现dependencyManagement没有作品。换句话说,我遇到了相同的依赖冲突问题,这些问题已经在公共库lib的dependencyManagement中解决。

我知道依赖关系管理的复制粘贴到处都是制作它的方法,但它非常难以维护。

有没有其他方法可以达到目标?

谢谢。

回答

0

是的,您的“常用库”可以声明所需的版本为<dependency>(不仅在dependencyManagement中),还可以使用排除来排除不需要的版本。这也可以传递。

对于dependencyManagement来说,传递性也会很好,但它可能会使Maven的非常复杂的依赖关系解析过程变得更加复杂。

+0

由于maven不支持全局排除,唯一的办法是一个一个地排除所有冲突? – twds

+0

'全球排除'是什么意思? – khmarbaise

+0

只能在依赖关系中排除,而不能在全局排除。所以排除一个给定的图书馆可能需要几个条目。问题是排除是否必要。让我举个例子:如果你想让你的库使用log4j 1.2.17,那么把log4j 1.2.17作为依赖就足够了。如果您需要执行程序插件中的dependencyConvergence,则需要额外的排除项。 –