从java项目中删除额外的jar依赖项

时间:2017-06-09 13:08:44

标签: maven maven-plugin

我正在努力将多模块java项目迁移到maven。现在对于他们中的大多数人我迁移到了maven。 最后我知道我的项目包含了很多不必要的罐子,我想清理它们。

我知道maven有插件命令, mvn依赖:分析。哪个效果很好。

dependency:analyze分析这个项目的依赖关系,并确定哪些是:used和声明的;使用和未声明;未使用和声明。基于静态代码分析。

现在我的问题是,我如何删除报告的未使用和声明的依赖项以进行清理。有可能这些jar在运行时被使用,我的代码在删除后会很好地编译,但在运行时会爆炸。

示例: mycode使用开源库antisamy.jar之一进行编译,但在运行时需要batik.jar。和mvn依赖:分析报告我删除batik.jar。

我的理解是正确的还是我需要专家输入。

1 个答案:

答案 0 :(得分:0)

您的理解似乎是正确的。 但我不确定为什么你会认为有一种工具可以涵盖所有的基础。 是的,如果你通过反思来使用东西,那么任何工具都无法可靠地检测出你依赖这个类或另一个类的事实。

例如,请考虑以下代码段:

String myClassName = "com." + "example." + "SomeClass";
Class.forName(myClassName);

我认为您不能构建一个可以抓取代码并提取所有此类引用的工具。

我会使用尝试失败的方法,包括:

  • 删除dependency:analyze所说的多余的所有依赖项
  • 无论何时找到实际使用过的,只需将其添加回来

这可能效果很好,因为我希望反射实际使用的依赖项数量非常小。