繁体   English   中英

Go 模块用 v0.0.0- 替换了显式版本<timestamp> ——<revision> 在 go.mod 中

[英]Go modules replaces an explicit version with v0.0.0-<timestamp>-<revision> in go.mod

我最近在我的 Go 项目中添加了一个功能,这可能会破坏使用它的其他项目。 我决定通过添加一个匹配的 git 标签2.0.0 (以前是1.xx )来为这个项目“A”增加一个主要版本。 在我需要它的另一个项目“B”中,我更新了它的go.mod文件,如下所示:

module gitlab.mydomain.com/namespace/B

go 1.12

require (
    gitlab.mydomain.com/namespace/A v2.0.0
)

如您所见,我特别提到了v2.0.0 ,但是一旦我运行 B,A 的版本就会被v0.0.0-<timestamp>-<revision>覆盖。

我确保标签存在于遥控器中。

我在这里缺少什么?

从主要版本2v2及更高版本)开始,您必须修改导入路径,您必须将主要版本添加为导入路径的后缀。 您必须将包导入为:

import "gitlab.mydomain.com/namespace/A/v2"

这也必须出现在go.mod如:

require gitlab.mydomain.com/namespace/A/v2 v2.0.0

由于主要版本代表 Semver 中不兼容的更改,因此它们的导入路径也必须不同(相同的导入路径表示相同的依赖项)。 这是导入兼容性规则

如果旧包和新包具有相同的导入路径,
新包必须与旧包向后兼容。

Go Modules Wiki 中阅读更多相关信息:为什么主版本号必须出现在导入路径中?

以及博客文章: Go 博客:Go 模块:v2 及更高版本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM