如何在引用Java库的应用中复用已有依赖,避免重复声明
Gradle依赖传递问题解答
问题背景
我们构建了Java库com.company.aws-s3:1.0.0,其依赖配置如下:
implementation 'com.amazonaws:aws-java-sdk:1.12.472'
将该库集成到独立应用时,build.gradle要求再次声明com.amazonaws:aws-java-sdk依赖,但该依赖已在库中声明,能否避免在应用中重复声明?(补充:不想重复声明,希望应用与库使用相同版本,仅移除应用中的该依赖声明)
解决方案
- 问题根源:库中使用
implementation配置声明的依赖不会向上传递给上层项目,仅库自身编译时可访问,应用层无法自动继承该依赖,因此会触发依赖缺失的提示。 - 修正方式:把库中的
implementation替换为api配置,这样依赖会自动传递到应用层,应用引入你的库后无需重复声明:api 'com.amazonaws:aws-java-sdk:1.12.472' - 注意要点:
api配置会将依赖暴露给上层项目,确保这个AWS SDK是你的库对外API的一部分(比如库的接口返回了AWS SDK中的类),如果只是库内部私有使用,后续建议换回implementation,但根据你的场景,应用需要依赖该SDK来使用库中的接口,所以api是正确选择。
内容的提问来源于stack exchange,提问作者user352290
相关产品推荐
相关产品推荐

