

一个关于go module的有趣话题
source link: http://vearne.cc/archives/39468
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一个关于go module的有趣话题
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | http://vearne.cc
假如你正在使用go mod管理某个项目的代码库依赖
- case1: 某个项目的tag是超过v1版本的,你该怎么定义module
- case2: 某个项目要同时进行2个版本的开发,v2和v3 你该怎么定义module
为了验证效果,萌叔创建了项目 vearne/mod-multi-version
这个代码库只有一个文件
package mmv
import "fmt"
const Versoin = "v1.0.0"
func PrintVersion(){
fmt.Println("version:", Versoin)
}
其它项目使用vearne/mod-multi-version
package main
import (
"github.com/vearne/mod-multi-version"
)
func main() {
mmv.PrintVersion()
}
代码库的tag列表中包含以下tag
v1.0.0
v1.0.2
v2.0.1-Alpha
v2.0.5
v2.0.6
v3.0.0
v3.0.1
但如果你试图拉取v2.0.1-Alpha
╰─$ go get github.com/vearne/[email protected]
go get: github.com/vearne/[email protected]: invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2
错误提示主版本号只能是v0或者v1
3. 需要导入v2库怎么办?
module github.com/vearne/mod-multi-version/v2
go 1.16
module github.com/vearne/mod-multi-version/v3
go 1.16
注意module名称已经发生了变化
其它项目使用vearne/mod-multi-version
时,也要注意module名称的变化
package main
import (
"github.com/vearne/mod-multi-version/v2"
)
func main() {
mmv.PrintVersion()
}
现在我们已经很清楚了,只需要修改go.mod
中module的定义,就可以方便的引入主版本大于v1
的情况了。对于case2
的情况,可以拉2个不同的分支branch_v2
和branch_v3
来对应v2
、v3
的开发。最后,不要忘了修改go.mod
。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK