自动解决jar依赖项

时间:2012-08-28 09:13:42

标签: java jar

一个项目正在使用各种库。例如。 a.jarb.jarc.jard.jar等 一些罐子已被重构,现在是ab.jarcd.jar等 我需要的是一种自动方式来查找我的安装中的哪些罐子现在已经过时,我可以删除它们 这可能吗?

2 个答案:

答案 0 :(得分:2)

因此,使用LooseJar,您可以通过添加以下内容来检测未使用的Jar文件:

-javaagent:loosejar.jar
从命令行调用时(或作为Eclipse中的VM选项),从

到java命令。我想这在技术上并不是自动的,因为需要调用在运行时动态加载类的代码行,以便LooseJar知道该类及其所需的jar。一个好方法可能是使用这个java代理调用你的单元测试(假设你的单元测试具有良好的代码覆盖率)

答案 1 :(得分:2)

最好的方法是使用maven。如果在maven中定义依赖关系,则可以运行mvn dependency:tree来检索所需信息。有关详细信息,请参阅此article

如果你不使用maven,你可能需要使用像jdepend这样的工具。但要小心:这些工具无法真正检索所有依赖项。通过仅使用静态分析反射来检索对动态加载的类或API的依赖是不可能的。只有在运行应用程序时,才能实现完整的解决方案,使用所有可能的方案对其进行测试,并检查类加载器加载的类。如果您有100%的测试覆盖率,则可以使用选项-verbose:class运行应用程序,然后针对您的应用程序运行所有单元测试。您将获得所有已加载类的列表。现在将此列表放入文件并编写shell脚本,分析类列表并将其转换为jar列表。