有关调试Maven依赖性问题的提示

时间:2013-12-10 16:15:14

标签: java maven

我们在我工作的大型企业IT商店中使用Maven。即使我只需要添加一个新的依赖项,依赖层次结构似乎也很快变得难以管理。在对代码库进行小的更改时,我发现我花了更多的时间来调试Maven问题,然后是实际的代码。我正在寻找如何

的方向
  1. 更快地调试问题
  2. 如何设计新软件以避免纠结的循环依赖网络,将排除项放在pom.xml中等等。
  3. 谢谢!

3 个答案:

答案 0 :(得分:1)

我会就解开maven依赖问题给出以下建议。首先,我将利用命令行中的mvn dependency:tree目标。这将为您提供一个很好的依赖树,并且可以更容易地找出某些版本冲突(即Hibernate正在使用与您的slf4j依赖项冲突的log4j版本)。对于可视化循环依赖关系的一种好方法,Eclipse的m2eclipse插件有一些非常好的可视化实用程序来帮助您对其进行排序。最后,我建议通过利用<dependencyManagement>功能在root pom.xml中定义项目依赖项的版本,以便在一个地方管理所有版本,这将允许子pom.xml文件仅声明{{ 1}}和<groupId>

答案 1 :(得分:0)

我建议你使用eclipse maven插件(m2e) - 它有一个出色的图形依赖查看器,可以让你快速追踪依赖冲突。它实际上提供了两个视图 - 树视图和“层次结构”视图。我更喜欢层次结构视图,因为它允许您搜索和过滤传递依赖项并突出显示冲突。

答案 2 :(得分:0)

这个命令应该是你最好的朋友:Resolving conflicts using the dependency tree

如何设计新软件以避免纠结的循环依赖网络?

我担心没有明确而简单的答案,当然有很多方法,但我会说如果你有专门的(团队/迷你团队/一个人?)会更好负责照顾组织中的所有Maven内容。他们应该分析依赖关系,如果有任何要求向项目添加新的依赖关系,他们应该批准/拒绝它。