0

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

在我的项目中,我对其他工件有依赖关系,并且我使用实现依赖关系。

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

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

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

这是否意味着在我的项目中对其他依赖项使用实现不是正确的方法?我应该用别的东西吗?您能否就正确的方法多做一些贡献?

谢谢

4

1 回答 1

1

查看 gradle 的Java 库插件。它存在于这种确切的情况。

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

于 2020-12-29T20:17:13.280 回答