我正在将多模块java项目迁移到maven中。现在,对于他们中的大多数人,我迁移到了maven。最后,我意识到我的项目包含了很多不必要的罐子,我想把它们清理干净。
我知道maven有插件命令,mvn依赖:分析。效果很好。
依赖性:分析该项目的依赖关系,并确定哪些是已使用和声明的;哪些是已使用和未声明的;哪些是未使用的和已声明的。基于静态代码分析。
现在我的问题是,我如何为清理目的删除已报告的未使用的和声明的依赖关系。有可能这些jars在运行时被使用,我的代码在删除后会非常好地编译,但在运行时会崩溃。
一个例子:使用一个开放源码库antisamy.jar编译 mycode,但它在运行时需要batik.jar。以及mvn依赖项:删除batik.jar。
我的理解是正确的还是需要专家的意见。
发布于 2017-06-09 13:54:15
你的理解似乎是正确的。但我不知道为什么你会认为有一个工具可以覆盖所有的基础。是的,如果您通过反射使用一些东西,那么没有一个工具能够可靠地检测到您依赖于这个类或另一个类的事实。
例如,考虑一下这个片段:
String myClassName = "com." + "example." + "SomeClass";
Class.forName(myClassName);我不认为您可以构建一个可以在代码中爬行并提取所有此类引用的工具。
我会使用一种尝试失败的方法,它包括:
dependency:analyze说是多余的所有依赖项这可以很好地工作,因为我预计反射实际使用的依赖项的数量非常少。
https://stackoverflow.com/questions/44458684
复制相似问题