我们的依赖树中有一个案例,我们有两个版本的同一个jar来自不同的源,我们想要使用的版本在树中较低,所以maven使用最近的wins方法选择另一个版本
要解决此问题,我们可以从源依赖项中排除这个不正确的版本,或直接将该版本添加为我们的pom中的另一个依赖项。
我更喜欢后者,因为它更快。但我不确定这是否是最佳方式,或者是添加依赖项的任何缺点。那么,是否比我更好地添加排除?在什么情况下以及如何?
答案 0 :(得分:1)
我建议明确定义你的依赖关系,以便通过传递依赖来明确你期望的版本。
虽然您通常只声明代码直接引用的依赖项(即您在Java中使用import
语句来包含来自这些依赖项的类),但也建议通过显式声明来控制依赖项解析。显式声明将优先于Maven依赖关系中介。
排除项使您的构建难以维护,并且可能需要反复复制相同的排除,例如,如果通过其他依赖项传递相同的依赖项,并且每次使用不同的版本(不是您的那个版本)想)。此外,排除可能会产生不良影响,因为它可能在不期望时优先考虑。 将其声明为依赖项的一部分,使其在未来更加清晰,集中且易于更新/维护。
更新:更好的方法是使用dependenciesManagement
部分,该部分也优先于Maven依赖关系中介,如官方文档here中所述
依赖关系管理优先于传递依赖关系的依赖关系中介