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

Gradle 7.1.1 不执行includedBuild及其传递依赖项目测试的问题

问题根因

这是Gradle复合构建(includeBuild)的默认设计逻辑:

  • 当你通过includeBuild引入依赖项目时,Gradle默认仅按需拉取构建上游项目所需的产物,比如core-ssl依赖core-datawrapper的jar包,core-datawrapper又依赖core-util的jar包,所以构建core-ssl时只会触发被依赖项目到jar的前置任务链路,和jar产出无关的test、check等任务不会被自动触发。
  • 你记忆的build任务依赖assemble和test的规则是针对单个项目自身的任务依赖逻辑,该逻辑不会自动传递到复合构建引入的外部项目。同理clean、publish任务默认也只会作用于当前执行命令的项目树,不会递归到includeBuild引入的项目。

解决方案

无需为每个子项目单独配置,可通过全局任务绑定规则实现自动传递,后续新增依赖项目也无需额外调整:
在Gradle全局初始化脚本init.gradle(对所有项目生效)或者当前仓库的根build.gradle中添加如下配置即可:

gradle.taskGraph.whenReady { graph ->
    // 筛选需要透传到依赖项目的任务类型
    def needPassTasks = graph.allTasks.findAll { it.name in ['build', 'clean', 'publish'] }
    if (needPassTasks.empty) return

    // 给所有复合构建引入的项目绑定同名任务依赖
    gradle.includedBuilds.each { includedBuild ->
        needPassTasks.each { task ->
            task.dependsOn includedBuild.task(":${task.name}")
        }
    }
}

配置生效后,执行build、clean、publish任意一个任务时,都会自动触发所有传递依赖的includeBuild项目的同名任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 23:06:03