具有相同依赖项的两个版本-较低版本被忽略

他们全部 :

我有一个项目,其中两个依赖项使用同一库的不同版本。例如,我的项目具有dependency A和dependency BAB都使用通用的库/依赖项X,但版本不同。A拥有v1的版本XB具有v2的版本X所以,现在当我添加AB在我的项目依赖,有2个版本,X在我的项目的go.sum

我期望在运行时由A引用各个版本B但事实并非如此。不知怎的,当我在我的项目运行测试时,A使用v2X,最好应使用v1(因为在go.modA,明确指定/加v1)。所以,它打破了执行,因为有很多在差异v1v2X

所以,在我的项目,我怎么能明确指定要使用v1X通过A和使用v2Bgo模块中是否有此类规定?

icza:

您的B软件包必须X带有/v2后缀。

转到Wiki:模块:语义导入版本控制:

当v1或更高版本的软件包进行向后不兼容的更改时,召回semver需要对主要版本进行更改。遵循导入兼容性规则和semver的结果称为语义导入版本控制,其中主要版本包含在导入路径中-这可确保在主要版本由于兼容性中断而增加时,导入路径会随时更改。

语义导入版本控制的结果是,加入Go模块的代码必须遵守以下规则:

  • 如果模块的版本为v2或更高版本,则必须/vN在go.mod文件(例如module github.com/my/mod/v2require github.com/my/mod/v2 v2.0.0)和包导入路径(例如import "github.com/my/mod/v2/mypkg")中使用的模块路径的末尾将主要版本作为

导入路径中的此版本后缀将使它们成为2个“不同”的软件包。如果AB会使用的相同主版本X,则将不会有2个主版本,则将选择较高版本(“最小版本选择”算法)。有关详细信息,请参见版本选择

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

下载较低版本的Pod文件

需要Mac的Visual Studio较低版本

创建较低版本的Runnable jar文件

如何发布较低版本的Ruby gem

useDispatch使用较低版本的react-redux

运行Xcode以在较低版本的IOS中运行

为什么yum选择较低版本进行安装

Cordova较低版本的离子错误-请安装Cordova CLI到版本> = 4.2.0

运行可执行的Java jar-较高版本还是较低版本?

从较低版本到更新版本的Gitlab分支/标签比较

Nuget依赖性似乎已被较低版本的SOMEHOW覆盖

是否存在字母wchar_t,使其大写和较低版本相同?

如何查找在Android项目的较低版本中使用的所有危险权限

values-sw300dp是否可以在较低版本的Android上运行?

为什么innodb主选择优先考虑较低版本的服务器?

我可以将Android 4.4 API用于2.3之类的较低版本吗?

Maven 弹性搜索一直显示较低版本

如何在Apple Test Flight中上传较低版本的IPA?

为什么要选择较低版本的软件包?

如何将mySQL转储文件导入MySQL较低版本?

Ngrx对较低版本的打字稿的影响不起作用

在较低版本上的SQL Server数据库备份还原

在Intelli J Idea中进行调试时,Tomcat加载了较低版本的Spring库

Android:以较低版本运行Card View和Recycler视图

Android studio错误此支持库不应使用较低版本(19)

我可以在Alpha测试频道中生产较低版本的代码吗

iOS 11:应用程序仅在 iOS 11 中崩溃,而不是在较低版本中

我可以将 python 3.7 代码转换为较低版本吗?

Android N Stream API是否向后移植到较低版本?