如何在maven多项目中找到不必要的依赖项?

Han*_*örr 12 dependencies maven-2 modularity module

如果您正在开发一个大型的进化多模块maven项目,那么在poms中给出一些不必要的依赖关系似乎是不可避免的,因为它们被其他依赖项传递包含在内.例如,如果你有一个最初包含C的模块A,就会发生这种情况.稍后你重构并让A依赖于模块B,而模块B又取决于C.如果你不够小心,你最终会同时使用B和C A的依赖列表.但是当然你不需要将C放入A的pom中,因为无论如何它都是可传递的.是否有工具可以找到这种不必要的依赖项?

(这些依赖关系实际上并没有受到伤害,但它们可能会模糊您的实际模块结构,并且在pom中使用较少的东西通常会更好.:-)

lex*_*ore 12

在某种程度上你可以使用dependency:analyze,但它没有太大帮助.还要检查JBoss Tattletale.

前段时间我已经开始使用maven-storyteller-plugin来更深入地分析poms,但该项目远离生产/公共使用.您可以使用storyteller:recount目标来分析未使用/冗余的依赖项.

整个故事的问题是 - 如何确定"未使用"的东西.有可能分析的是例如类引用.但是如果你使用反射 - 直接或非直接使用它将无法工作.

2014年11月更新.

我刚刚把我故事的Storyteller插件代码移到了GitHub上.我会刷新它并释放到中央,以便它可用于其他人.