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

多模块项目依赖配置优化:如何让项目A间接引用模块C?

关于多模块Gradle依赖传递的解决方案

嘿,这个问题其实戳中了Gradle依赖配置里很关键的传递性规则,我给你理得明明白白的~

首先直接给结论:不能直接只保留模块B里的implementation project(':C')就让项目A用C的功能,但只要改个配置就能实现你想要的效果!

为什么当前配置不行?

你现在模块B用的是implementation来声明对C的依赖,Gradle里的implementation是非传递性依赖——简单说就是,只有模块B自己能访问C的所有功能,而依赖B的项目A是“看不到”C的类、方法这些内容的,要是A里直接写调用C的代码,编译肯定会报错。

正确的配置方式

只需要改两个地方:

  1. 模块B的build.gradle里,把依赖声明改成:
    api project(':C')
    
  2. 项目A的build.gradle里,只需要保留对B的依赖就行,删掉对C的直接依赖:
    implementation project(':B')
    

原理说明

api是Gradle里的传递性依赖配置,当你用api声明B对C的依赖时,所有依赖B的模块(比如你的项目A)都会自动获得对C的依赖权限,这样A就能正常调用C的功能了,完全不需要再单独声明对C的依赖。

如果之后你不想把C的全部功能都暴露给A,还可以考虑通过B封装C的功能(比如在B里写适配层,只暴露需要给A用的接口),但如果只是想简单实现“通过B间接让A用C”,上面的方案最直接高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:53:23