我正在维护公司的 go 库,该库使用Semantic Versioning发布。我切换到库中的 go modules 进行依赖性管理,并在 v2 + 之后创建了一个新版本。我使用了记录在案的here的第一个策略,该策略涉及修改 go.mod 文件并导入路径。
现在,当人们使用go get命令(在也使用go模块的仓库中)时,出现错误:
invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3
有人知道这个问题吗?
为简化起见,我创建了一个相似而简单的示例:
我有三个文件(不包括 .gitignore )的仓库( github.com/Graphmasters/testing-gomod-versioning )。这些文件是:
package methods
func Method() {
println("Method")
}
package main
import (
"github.com/Graphmasters/testing-gomod-versioning/v3/methods"
)
func main() {
methods.Method()
}
module github.com/Graphmasters/testing-gomod-versioning/v3
go 1.13
在回购协议中,我根据带有此代码的分支创建了带有标签 v3.0.0 的发行版。
在使用go模块的仓库中运行以下命令时,会遇到上述错误:
go get "github.com/Graphmasters/testing-gomod-versioning@v3.0.0"
答案 0 :(得分:0)
模块名称必须为github.com/Graphmasters/testing-gomod-versioning/v3或github.com/Graphmasters/testing-gomod-versioning.v3,而不是github.com/Graphmasters/testing-gomod-versioning>
用户应该能够执行github.com/Graphmasters/testing-gomod-versioning/v3@v3.0.0而不是github.com/Graphmasters/testing-gomod-versioning@v3.0.0
示例:您可以检查以下v3软件包的mod文件-https://search.gocenter.io/gotest.tools~2Fv3/info?version=v3.0.0