Android Library依赖私有Maven仓库在App中构建失败问题咨询
这是Gradle依赖解析的预期行为
原因说明
Gradle的依赖解析逻辑是在消费模块(即你的application模块)的上下文环境中执行的,而非生产模块(library模块)。也就是说:
- library模块自身配置的私有仓库,仅用于library模块自身构建时拉取依赖;
- 当application模块引入library后,application需要自行解析所有传递过来的依赖(包括library使用的私有依赖),此时只有application模块(或项目根级)配置的仓库会被用来查找这些依赖。
切换implementation和api无法解决问题,因为这两个配置仅控制依赖的可见性(api会将依赖暴露给上层模块,implementation则不会),但无论哪种配置,只要依赖需要被解析,消费模块都必须有对应的仓库配置——解析动作始终发生在消费侧。
无需在application中单独配置私有仓库的解决方案
如果你不想在application模块中单独添加私有仓库,可以采用以下方式:
- 在项目根目录的
settings.gradle(或settings.gradle.kts)中配置共享仓库
将私有仓库配置在项目根级的依赖管理块中,这样所有模块(包括library和application)都会继承这个配置,无需在每个模块重复声明:dependencyResolutionManagement { repositories { mavenCentral() // 配置你的私有Maven仓库 maven { url "https://your-private-repo-url" } // 保留你原本在application中配置的个人仓库 maven { url "https://your-personal-repo-url" } } }
内容的提问来源于stack exchange,提问作者user3921533
相关产品推荐
相关产品推荐

