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

Gradle 8.4+Java21在TeamCity构建阻塞:无法推进任务执行

问题:升级Java 21和Gradle 8.4后TeamCity构建死锁失败

我们将基于Selenium-Java-Gradle的自动化测试项目部署在TeamCity CI服务器,近期把Java版本升级至21、Gradle版本升级至8.4后,本地测试无任何异常,但TeamCity构建被标记为失败,报错信息如下:

Unable to make progress running work. The following items are queued for execution but none of them can be started:
10:49:51    - Build ':':
10:49:51        - Waiting for nodes:
10:49:51            - :build (state=SHOULD_RUN, dependencies=NOT_COMPLETE, group=task group 2, dependencies=[:assemble (SHOULD_RUN), :check (EXECUTED)], waiting-for=[:assemble (SHOULD_RUN)], has-failed-dependency=false )
10:49:51            - :clean (state=SHOULD_RUN, dependencies=COMPLETE_AND_SUCCESSFUL, group=task group 1, dependencies=[Resolve mutations for :clean (EXECUTED), producer locations for task group 0 (EXECUTED)], has-failed-dependency=false )
10:49:51        - Nodes ready to start:
10:49:51            - :jar
10:49:51            - :clean
10:49:51        - Reachable nodes:
10:49:51            - :jar (state=SHOULD_RUN, dependencies=COMPLETE_AND_SUCCESSFUL, group=task group 2, dependencies=[Resolve mutations for :jar (EXECUTED), destroyer locations for task group 1 (EXECUTED), :classes (EXECUTED), :compileJava (EXECUTED)], has-failed-dependency=false )
10:49:51            - :assemble (state=SHOULD_RUN, dependencies=NOT_COMPLETE, group=task group 2, dependencies=[:jar (SHOULD_RUN)], waiting-for=[:jar (SHOULD_RUN)], has-failed-dependency=false )
10:49:51        - Scheduling events:
10:49:51            - node added to plan: destroyer locations for task group 0, when: scheduled, state: SHOULD_RUN, dependencies: 0, is ready node? true
10:49:51            - node added to plan: destroyer locations for task group 1, when: scheduled, state: SHOULD_RUN, dependencies: 2, is ready node? false
10:49:51            - node added to plan: producer locations for task group 0, when: scheduled, state: SHOULD_RUN, dependencies: 5, is ready node? false
10:49:51        - Ordinal groups:
10:49:51            - group 0 entry nodes: [:test (EXECUTED)]
10:49:51            - group 1 entry nodes: [:clean (SHOULD_RUN)]
10:49:51            - group 2 entry nodes: [:build (SHOULD_RUN)]
10:49:51    - Workers waiting for work: 4
10:49:51    - Stopped workers: 0
10:49:51  java.lang.IllegalStateException: Unable to make progress running work. There are items queued for execution but none of them can be started

可能的原因

  • Gradle任务调度逻辑冲突:Gradle 8.x对任务分组、并行执行的调度机制做了调整,结合TeamCity的构建环境,可能出现任务分组间的依赖死锁。从报错可见,:clean任务已处于可执行状态,但因为分组优先级或调度规则的问题,未被分配给空闲worker,导致后续任务无法推进。
  • TeamCity Gradle插件版本过低:TeamCity的Gradle运行插件如果未同步升级,无法适配Gradle 8.4的新调度模型。旧版本插件对Gradle 8.x的任务依赖解析、分组执行支持存在缺陷,引发调度异常。
  • Java环境配置不一致:虽然本地Java 21运行正常,但TeamCity agent端的Java环境可能未正确切换到21,或者TeamCity服务器与构建任务使用的JVM版本不匹配,导致Gradle调度逻辑出现隐性错误。
  • 自定义任务依赖的兼容性问题:如果项目中自定义了build/assemble等核心任务的依赖关系,Gradle 8.x对依赖验证的严格性提升,在本地缓存环境下未暴露问题,但在TeamCity的干净构建环境中,这种自定义配置会触发调度死锁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:10:00