git - Go 模块用 v0.0.0 替换显式版本--在 go.mod 中
问题描述
我最近在我的 Go 项目中添加了一个功能,它可能会破坏使用它的其他项目。我决定通过添加一个匹配的 git 标签2.0.0
(以前是1.x.x
)来为这个项目添加一个主要版本“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>
.
我确保标签存在于遥控器中。
我在这里想念什么?
解决方案
从主版本2
(v2
及更高版本)开始,您必须修改导入路径,您必须将主版本作为后缀添加到导入路径。您必须将包导入为:
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 及以后
推荐阅读
- javascript - 如何删除每个字符后面的字符串?
- sql - 从不同数据库的 2 个表中插入 2 个表
- amazon-web-services - AWS Fargate 服务可以运行 0 个任务吗?
- python - 如何在 Python 中同时打开多个文件?
- node.js - 我们如何阻止事件循环?
- c# - Visual Studio 缩进问题
- web - Zabbix 网站监控邮件通知
- java - 我在使用 Apache POI 库 n java 读取包含大量单元格公式的 excel 文件时遇到问题
- sql - 如何使用带有 in 运算符的 oracle sql 查询的结果?
- web-scraping - Web 将 OpenWeather(一次调用)API 中的特定数据抓取到 CSV 文件中