Go Programming Languages - Go Module Version
Go Module 版本规范
- Go module 每个版本以v开头,后面跟_语义版本_。当vcs为git时候,通常情况下模块的版本会是git tag的版本
当没有语义版本的时候,会生成一个伪版本,例如
v0.0.0-20190306012644-bacd9c7ef1dd
这种,其中第二部分代表代码生成的时间,第三部分是这个代码当前commit的id的前12个字符。(可以通过git log
来查看)主版本为2或更高版本的时候,go模块路径必须带有类似于
/v2
或/v3
这样的主版本后缀,比如github.com/gocolly/colly/v2
,github.com/mailru/go-clickhouse/v2
,这就是为什么go get
或go install
的时候可以指定版本号,如:
1 | go get github.com/cespare/[email protected] |
- 主版本号不同表示不兼容,一个项目里可能同时依赖不同的主版本号,比如
1 | import ( |
go get -u
不会更新主版本号,即-u
表示更新到当前主版本号下的最新版本在使用go module规范之前,有些第三方库的高版本没有加
/v2
或/v3
后缀,此时需要加incompatible,如github/go-redis/redis v6.15.9+incompatible
路径没有/v6
后缀主版本后缀不允许有
/v0
或/v1
出现- 一种特殊情况:以
gopkg.in/
开头的模块路径必须始终具有主版本后缀。后缀必须以点开头,而不是斜杠,例如gopkg.in/check.v1
,gopkg.in/yaml.v3
- 一种特殊情况:以
Go Programming Languages - Go Module Version