首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个不同的jars x,y依赖于不同的z版本。用户如何在他的应用程序中同时拥有x,y?

两个不同的jars x,y依赖于不同的z版本。用户如何在他的应用程序中同时拥有x,y?
EN

Stack Overflow用户
提问于 2018-12-19 13:16:18
回答 2查看 28关注 0票数 0

我正在制作rest客户端jars来调用每组服务。对于services -1,services -2,services-3;我们分别有clientjar1,clientjar2,clientjar3。在所有的rest客户端jar中,有一些常见的功能,我将它们保存在一个单独的jar中,即"corejar1.0“中。所有的客户端jar都依赖于"corejar1.0“。

现在,我必须为一组新的服务创建一个新的客户端jar "clientjar4“-4。但这不适用于旧的"corejar1.0“。因此,我修改了corejar的内容,并发布了一个新版本"corejar1.1“。因此,"clientjar4“指的是"corejar1.1”,而所有其他客户端都指的是"corejar1.0“。现在,如果用户想同时使用cientjar1和clientjar4,就会有版本冲突,因为它们都引用了不同的核心jar版本。因此,其中一个客户端jar可能无法按预期工作。

因此,一种解决方案是通过更新所有客户端jars以指向新的"corejar1.1“来重新发布所有客户端jars。我觉得这不是一个好方法,因为我们正在发布新版本的客户端jars,尽管它们各自的服务没有变化。

我的项目是一个java项目,我使用Gradle作为构建工具。有没有人能提出一个更好的解决方案?

EN

回答 2

Stack Overflow用户

发布于 2018-12-21 02:22:15

正如@Andreas提到的,管理corejar1.0corejar1.1之间的向后兼容性是您的责任。

为了管理依赖图,您可以依赖于构建工具。本例中的Gradle将意识到corejar 1.01.1之间存在版本冲突,Gradle的默认冲突解决机制是选择最高版本。

虽然这在您的情况下看起来是很好的解决方案,但在其他情况下,它并不那么简单。为此,您可以调整the way Gradle will resolve transitive dependencies及其版本。

票数 2
EN

Stack Overflow用户

发布于 2018-12-19 13:56:30

如果您确保对corejar1.1所做的更改是向后兼容 corejar1.0的,那么让clientjar1使用corejar1.1不是问题。

如果您想要防止依赖冲突,则需要确保共享库与库的旧“用户”保持兼容。

如果您不能使corejar1.1向后兼容corejar1.0,那么您必须部署所有客户端jars的更新版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53844977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档