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