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

如何列出触发指定Gradle任务的所有任务?是否有反向依赖插件?

如何列出会触发指定Gradle任务的所有任务

Gradle原生没有直接提供反向任务依赖查询的命令,但可以通过插件或自定义任务实现这个需求:

1. 使用现成插件:net.ltgt.gradle.taskinfo

这个插件提供了taskIncoming任务,专门用于查看指定任务的上游依赖(即哪些任务会触发它执行)。

使用步骤:

  • 在项目根目录的build.gradle中添加插件依赖:
    plugins {
      id "net.ltgt.gradle.taskinfo" version "1.1.0"
    }
    
  • 执行命令查询指定任务的上游任务,比如要找触发compileJava的所有任务:
    ./gradlew taskIncoming --task compileJava
    
    输出会列出所有直接或间接依赖compileJava的任务,以及完整的依赖链。

2. 自定义Gradle任务实现反向查询

如果不想引入第三方插件,可以在build.gradle中添加一个自定义任务,遍历所有任务并检查它们是否依赖目标任务:

task findTriggeringTasks {
    doLast {
        def targetTaskName = "compileJava" // 替换为你要查询的任务名
        def targetTask = project.tasks.findByName(targetTaskName)
        if (!targetTask) {
            println "任务 $targetTaskName 不存在"
            return
        }

        println "所有会触发 $targetTaskName 的任务:"
        project.tasks.each { task ->
            // 检查任务是否直接或间接依赖目标任务
            if (task != targetTask && task.dependsOn.any { dep ->
                dep instanceof Task && (dep == targetTask || dep.dependsOn.contains(targetTask))
            }) {
                println "- ${task.path}"
            }
        }
    }
}

使用方法:

  • 修改targetTaskName为你要查询的任务名
  • 执行自定义任务:
    ./gradlew findTriggeringTasks
    
    注:上述代码仅检查直接依赖和一级间接依赖,若需递归遍历所有层级的间接依赖,可以扩展逻辑,遍历任务的完整依赖树。

3. 另一个可选插件:com.dorongold.task-tree

这个插件主打正向任务依赖树展示,但也支持反向查询:

./gradlew taskTree --reverse --task compileJava

该命令会以反向树结构展示所有依赖compileJava的任务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:01:21