使用 gradle 的库 jar 依赖项

问题描述

我正在使用 gradle 6.7 并创建一个库项目,该项目被编译成一个 jar,放在我自己的 s3 工件存储库中。

在我的项目中,我依赖于其他工件,我使用了实现依赖项。

创建 jar(不是胖 jar)并上传到 s3 存储库。

当在另一个项目中我通过获取它作为实现依赖来使用我的库时,我在我的库中使用的其他依赖项出现错误 NoClassDef,这意味着没有找到我的依赖项的运行时正在我的图书馆中使用。

我的问题是,创建一个胖罐子是否是个好主意?我不认为其他库(例如 springboot 和其他库)正在使用胖罐子,对吗?但是,当我将它们用作依赖项时,会在运行时发现其他依赖项。

这是否意味着在我的项目中对其他依赖项使用 implementation 不是正确的方法?我应该用别的东西吗?能否请您多贡献一点关于什么是正确的方法

谢谢

解决方法

查看 Java Library Plugin 以获得 gradle。它存在于这种确切情况下。

如果您的库的依赖项需要向您的库的使用者公开,那么您可以使用 api 而不是 implementation。插件文档 here 中有一个很好的部分,可用于帮助您确定何时将依赖项声明为 apiimplementation