You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Gradle获取指定Java类的所有依赖?

如何用Gradle获取单个Java类的直接与传递依赖

当然能搞定!Gradle本身确实没有直接提供针对单个类的依赖树生成命令,但咱们可以通过几个实用的方法来实现这个需求,下面给你详细拆解:

方法1:结合jdeps与Gradle的dependencyInsight

这是最轻量化的方案,利用JDK自带的jdeps工具先定位单个类的直接依赖库,再用Gradle的dependencyInsight深挖传递依赖:

  • 第一步:先编译项目(确保能找到编译后的.class文件)
    ./gradlew compileJava
    
  • 第二步:用jdeps分析目标类的直接依赖
    替换下面的类路径为你要检查的类的全限定名对应的路径:
    jdeps -s build/classes/java/main/com/example/YourTargetClass.class
    
    这个命令会输出该类直接依赖的第三方库或JDK模块,比如com.google.guava:guava这类结果。
  • 第三步:用dependencyInsight查看该库的传递依赖
    拿上面的Guava举例,执行命令:
    ./gradlew dependencyInsight --dependency guava --configuration compileClasspath
    
    这样就能看到这个库的所有直接和传递依赖链了。如果是多模块项目,记得加上模块名前缀,比如./gradlew :your-module:dependencyInsight。

方法2:自定义Gradle任务一键生成报告

如果需要更自动化的流程,可以写个自定义Gradle任务,自动调用jdeps生成完整的依赖报告:

在项目的build.gradle(Groovy语法)里添加以下任务:

task generateClassDependencyTree(type: Exec) {
    // 替换成你要检查的类的全限定名
    def targetClassFullName = "com.example.YourTargetClass"
    def classFilePath = "build/classes/java/main/${targetClassFullName.replace('.', '/')}.class"
    def classFile = file(classFilePath)

    // 确保任务依赖编译任务,避免找不到class文件
    dependsOn compileJava
    inputs.file(classFile)
    outputs.dir(file("build/reports/class-dependencies"))

    // 调用jdeps生成详细依赖,输出到文件
    commandLine "jdeps", "-v", classFile.absolutePath
    standardOutput = new FileOutputStream(file("build/reports/class-dependencies/${targetClassFullName}.txt"))
}

执行这个任务:

./gradlew generateClassDependencyTree

任务完成后,你会在build/reports/class-dependencies/下找到目标类的完整依赖报告,里面包含直接和传递依赖的详细信息。

小提示

  • 如果你的类在test源集里,记得把路径里的main改成test,配置也换成testCompileClasspath
  • 要是用Kotlin DSL的build.gradle.kts,只需要把上面的Groovy代码转换成对应的Kotlin语法即可

内容的提问来源于stack exchange,提问作者HarryDeluxe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 16:37:28