我正在使用gradle 6.7并创建一个库项目,该项目被编译到一个jar中,该jar放在我自己的s3工件存储库中。
在我的项目中,我对其他工件有依赖关系,并且我使用实现依赖关系。
创建jar(而不是胖jar(并上传到s3存储库。
在另一个项目中,我通过将库作为实现依赖项来使用库时,我在库中使用的其他依赖项会出现NoClassDef错误,这意味着在库中没有找到我使用的依赖项的运行时。
我的问题是,制作一个肥罐子是否是个好主意?我不认为其他库(例如springboot和其他库(正在使用胖罐子,对吧?然而,当我将它们用作依赖项时,在运行时会发现其他依赖项。
这是否意味着在我的项目中对其他依赖项使用实现不是正确的方法?我要用别的吗?你能多贡献一点什么是正确的方法吗?
谢谢
查看gradle的Java库插件。它的存在正是为了这种情况。
如果您的库的依赖项需要向库的使用者公开,那么您应该使用api
而不是implementation
。插件文档中有一个很好的部分,可以用来帮助您确定何时将依赖项声明为api
和implementation
。