Maven 依赖关系解决(冲突)
假设我有四个项目:
- 项目 A(依赖于 B 和 D)
- 项目 B(依赖于 D)
- 项目 C(依赖于 D)
- 项目 D
在这种情况下,如果我运行项目 A,Maven 将正确地将依赖项解析为 D。如果我理解正确,Maven总是采用最短路径的依赖关系。由于 D 是 A 的直接依赖关系,因此将使用 D,而不是在 B 中指定的 D。
但现在假设这个结构:
- 项目 A(依赖于 B 和 C)
- 项目 B(依赖于 D)
- 项目 C(依赖于 D)
- 项目 D
在这种情况下,解析 D 的路径具有相同的深度。发生的事情是,Maven将发生冲突。我知道可以告诉Maven他应该排除依赖关系。但我的问题是如何解决这类问题。我的意思是,在现实世界的应用程序中,你有很多依赖关系,也可能有很多冲突。
最佳实践解决方案是否真的排除了某些内容,或者是否有其他可能的解决方案?当我突然得到一个ClassNotFound异常时,我发现很难处理,因为一些版本已经改变,这导致Maven采用不同的依赖关系。当然,知道这个事实可以更容易地猜测问题是依赖关系冲突。
我正在使用maven 2.1-SNAPSHOT。