一直用golang写业务代码,最近改动升级项把common module的version升级的v2,结果尴尬了,于是查了下文档,随手记录下v2.x及以后得版本的使用方法。
golang中module的版本管理分路径和版本号两部分,路径是go.mod
中开始module
后面定义的, 而version是按照git tag获取的,两部分组合在一起决定了一个唯一的版本。
PS:上面描述的version只是
go.mod
中通用的描述,其他如果没有tag,或使用commit以及时间组成一个唯一识别符等其他的情况,可以去文档详细了解
v2以下(v0/v1)
$ cat go.mod
module example.com/hello
go 1.12
require (
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c //没有tag时,直接引用的是最新一个commit
rsc.io/quote v1.5.2
rsc.io/sampler v1.3.0 //常规
)
v2.x及以上
区别于v1的版本,v2.x及以后得版本,都需要path和version匹配,及大版本需要在path中体现。
$ cat go.mod
module example.com/hello/v2 //如果要发布v2.x的版本,这里一定要加上v2
go 1.12
require (
github.com/golang/mock v1.3.1
github.com/micro/go-micro/v2 v2.3.0 //这里是v2.3.0的版本,path中必须有v2,没有的话会报错
)
PS: v2.x以上的其他版本都一样,path必须以大版本好结束,如
github.com/micro/go-micro/v3 v3.0.0