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

Gradle跨模块代码引用:如何从Module A访问Module C中的类

解决Gradle多模块中跨模块类访问的问题

这其实是Gradle依赖配置的特性导致的,我来给你拆解一下并解决这个问题:

问题根源

你当前用的implementation依赖配置是传递性隐藏的——简单说,当Module B用implementation依赖Module C时,C里的类只会在B的代码内部可见,不会被暴露给依赖B的Module A。这是Gradle特意设计的,目的是控制依赖可见性,避免上层模块意外依赖到下层模块的内部实现,同时减少类路径的冗余。

两种解决方案

方案1:将Module B对C的依赖改为api

如果你希望所有依赖Module B的模块(比如A)都能访问到Module C的类,只需要把Module B的build.gradle里的依赖配置从implementation改成api:

// Module B的build.gradle
dependencies {
    // 替换原来的implementation
    api project(":moduleC")
    // 其他依赖...
}

api配置的作用就是把依赖的模块“暴露”出去,让上层依赖模块能间接访问到这个依赖的内容。

方案2:在Module A中直接依赖Module C

如果只是Module A需要单独访问Module C的类,不想让所有依赖B的模块都看到C,那可以直接在Module A的build.gradle里添加对C的依赖:

// Module A的build.gradle
dependencies {
    implementation project(":moduleB")
    // 添加这一行
    implementation project(":moduleC")
    // 其他依赖...
}

这种方式会让A和C产生直接依赖关系,适合只在A中需要用到C的场景,但后续维护要注意这个直接依赖的存在。

小提示

日常开发中建议优先使用implementation,只有当确定需要把某个依赖暴露给上层模块时再用api,这样能保持依赖关系清晰,避免出现不必要的间接依赖哦。如果是Android项目,这个规则也是完全适用的,因为Android Gradle插件复用了标准Gradle的依赖配置逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:30:26