为什么此版本标签会导致错误?

时间:2019-07-26 03:08:50

标签: go

在我的go.mod文件中,我有:

require (
    // ... editted for brevity
    github.com/Liquid-Labs/catalyst-firewrap v2.0.0-prototype.3
    // ... 
)

当我尝试构建依赖于此软件包的另一个软件包时,我得到:invalid module: github.com/Liquid-Labs/catalyst-firewrap should be v0 or v1, not v2 (v2.0.0-prototype.3)

在进行模块化之前有一个重写,那时我没有标记东西,所以没有v1 ...是问题吗?我没有运气在这里找到潜在问题的解释。

1 个答案:

答案 0 :(得分:2)

根据Go modules wiki

  

如果模块为v2或更高版本,则为模块的主版本   必须以/vN的形式包含在   go.mod文件(例如module github.com/my/mod/v2require github.com/my/mod/v2 v2.0.0)   并在包导入路径中(例如,   import "github.com/my/mod/v2/mypkg"

同一文档引用了官方Go常见问题解答的原理:

  

用于公共用途的包装应尽量向后维护   不断发展的兼容性。 Go 1兼容性准则是   此处的参考文献很好:请勿删除导出的名称,鼓励添加标签   复合文字,等等。如果需要其他功能,   添加新名称而不是更改旧名称。如果完全休息   需要,请使用新的导入路径创建一个新程序包。

和:

  

如果旧软件包和新软件包的导入路径相同,则新   软件包必须与旧软件包向后兼容。