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

Gradle依赖异常::state:api被替换为:bus:api致构建失败求助

Gradle 4.7 独立子项目被误视为同一项目的问题解决

我之前也碰到过类似的Gradle依赖替换问题,结合你给出的配置和依赖输出,问题的根源其实很清晰:

问题原因

Gradle 在识别项目模块时,是基于**group:name:version 三元组**来判断两个项目是否为同一模块的。而你的两个子项目:

  • :bus:api:默认项目name是api(取自目录名),group为kic,version是1.0-SNAPSHOT
  • :state:api:同样默认项目name是api,group和version也和前者完全一致

这就导致Gradle认为这两个项目是同一个模块,自动将:state:api替换成了先被识别的:bus:api,最终类路径里只有bus api的代码,自然会出现依赖不满足的构建失败。你修改rootProject.name没用,是因为这个配置不影响子项目的group:name:version核心标识。

解决方案

只需要让两个子项目的group:name:version三元组唯一即可,有两种简单的实现方式:

方式1:给子项目设置唯一的name属性

在bus/api/build.gradle中添加:

name = 'bus-api'

在state/api/build.gradle中添加:

name = 'state-api'

这样两个项目的标识就变成了kic:bus-api:1.0-SNAPSHOT和kic:state-api:1.0-SNAPSHOT,Gradle就不会再把它们视为同一模块了。

方式2:修改子项目的group属性

在bus/api/build.gradle中修改group:

group 'kic.bus'

在state/api/build.gradle中修改group:

group 'kic.state'

这种方式下,即使项目name都是api,但group不同,三元组依然唯一,同样能解决问题。

验证修复

执行你之前的依赖命令验证:

./gradlew server:dependencies --configuration compile | grep project

如果输出中不再出现-> project :bus:api的替换标记,而是正常显示:state:api,就说明修复成功了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:22