在我的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
...是问题吗?我没有运气在这里找到潜在问题的解释。
答案 0 :(得分:2)
如果模块为v2或更高版本,则为模块的主版本 必须以
/vN
的形式包含在 go.mod文件(例如module github.com/my/mod/v2
,require github.com/my/mod/v2 v2.0.0
) 并在包导入路径中(例如,import "github.com/my/mod/v2/mypkg"
。
同一文档引用了官方Go常见问题解答的原理:
用于公共用途的包装应尽量向后维护 不断发展的兼容性。 Go 1兼容性准则是 此处的参考文献很好:请勿删除导出的名称,鼓励添加标签 复合文字,等等。如果需要其他功能, 添加新名称而不是更改旧名称。如果完全休息 需要,请使用新的导入路径创建一个新程序包。
和:
如果旧软件包和新软件包的导入路径相同,则新 软件包必须与旧软件包向后兼容。