Gradle复合构建无法解析依赖库传递依赖问题如何解决
问题核心原因
你使用了Gradle的java-library插件定义库B,该插件对依赖作用域做了明确拆分:
implementation声明的依赖仅在库B内部的编译、运行类路径生效,不会传递到依赖B的上游项目的编译类路径,仅会进入上游项目的运行类路径- 只有
api作用域声明的依赖才会同时暴露到上游项目的编译、运行类路径,实现传递依赖效果
你当前在库B中用implementation声明commons-lang3,所以项目A编译时无法访问该依赖的类,才会抛出包不存在的错误。
修复方案
方案1(推荐):修改库B的依赖作用域
将库B中需要对外暴露的公共依赖从implementation改为api即可,修改后库B的dependencies块如下:
dependencies { api 'org.apache.commons:commons-lang3:3.12.0' // 其他仅库B内部使用的依赖继续用implementation即可 }
该方案符合java-library插件的设计规范,公共依赖统一在库B维护,上游项目无需重复声明。
额外注意点
你贴出的库B配置中version = '0.1.0缺少闭合的单引号,属于语法错误,实际使用时请补全为version = '0.1.0',避免构建异常。
内容的提问来源于stack exchange,提问作者0wn3r
相关产品推荐
相关产品推荐

