假设我有四个项目:
在这个场景中,如果我运行项目 A,Maven 将正确地解析对 D 的依赖。如果我理解正确的话,Maven 总是采用最短路径的依赖项。因为 D 是 A 的直接依赖关系,所以它将被使用,而不是在 B 中指定的 D。
但现在假设这种结构:
在这种情况下,解析 D 的路径具有相同的深度。Maven 会有冲突。我知道有可能告诉 Maven 他应该排除依赖项。但我的问题是如何解决这类问题。我的意思是,在现实世界的应用程序中,您有很多依赖项,可能还有很多冲突。
最佳实践解决方案真的是排除东西,还是有其他可能的解决方案?当我突然得到 ClassNotfound 异常时,我发现很难处理,因为一些版本已经更改,这导致 Maven 采用了不同的依赖项。当然,了解这个事实会使我们更容易猜测这个问题是一个依赖冲突。
我用的是 Maven2.1-SNAPSHOT。