jdeps
JDeps是Java依赖关系分析工具 ,这是一个命令行工具,它处理Java字节码(意味着.class文件或包含它们的JAR),并分析类之间静态声明的依赖关系。 可以用各种方式过滤结果,并可以将其汇总到包或JAR级别。 JDeps还可以告诉您您的项目正在使用哪些JDK内部API,并且完全了解模块系统 。 总而言之,它是检查各种形式的依赖图的非常有用的工具。
在这篇文章中,我将向您介绍JDeps的工作方式-后续文章将向您展示一些很好的用例。 对于此探索,我鼓励您继续进行,最好是执行您的一个项目。 如果您有一个项目的JAR,并且在它旁边是一个包含所有传递依赖项的文件夹,这将是最容易的。 如果您使用的是Maven,则可以通过maven-dependency-plugin的copy-dependencies目标实现后者。 使用Gradle,您可以使用复制任务,从设置为configuration.compile或configuration.runtime 。
作为示例项目,我选择了Scaffold Hunter :
Scaffold Hunter是基于Java的开源工具,用于对数据集进行可视化分析,重点是生命科学中的数据,旨在直观地访问大型和复杂的数据集。 该工具提供多种视图,例如图形,树状图和图解视图,以及分析方法,例如用于聚类和分类
我下载了2.6.3版本的ZIP,并将所有依赖项都复制到了libs中。
当显示输出时,我将scaffoldhunter(在软件包名称中)和scaffold-hunter(在文件名称中)缩写为sh以使其更短。
认识JDeps
从Java 8开始,您就可以在JDK的bin文件夹中找到JDeps可执行文件jdeps。如果在命令行上可以找到JDeps可执行文件jdeps,则最容易使用它,对此您可能必须执行一些特定于操作系统的设置步骤。 确保jdeps –version可以正常工作并显示Java 9版本正在运行。
下一步是获取JAR并将JDeps设置为宽松。 在不使用其他命令行选项的情况下使用,它将首先列出代码所依赖的JDK模块。 紧随其后的是软件包级别的依赖关系列表,其组织为<package>-> <package> <module / JAR>。
调用jdeps sh-2.6.3.jar会得到以下输出:
$ jdeps sh-2.6.3.jar
sh-2.6.3.jar -> java.base
sh-2.6.3.jar -> java.d