【发布时间】:2020-06-21 08:52:44
【问题描述】:
如果 Go 存储库在其根目录和子文件夹中有一个 go.mod 文件,那么子模块的版本是如何发布的?
例如,我的团队一直在使用 Vault 开发我们的内部 cli 工具。 我们最终使用了:
github.com/hashicorp/vault/api
和
github.com/hashicorp/vault/commands github.com/hashicorp/vault
我正在尝试将 Vault/api 更新到最新版本 1.3.3:
github.com/hashicorp/vault v1.3.3
github.com/hashicorp/vault/api v1.3.3
问题是我明白了:
go: github.com/hashicorp/vault/api@v1.3.3: reading github.com/hashicorp/vault/api/api/go.mod at revision api/v1.3.3: unknown revision api/v1.3.3
我认为是这个根模块和一个冲突引起的。
【问题讨论】:
-
Golang 嵌套模块是可能的,但您的问题是关于 Vault 模块的特定问题。请重命名以反映问题的实际性质
-
你可以有子模块,问题是你导入的包没有,你把它当作它一样对待。您的
go.mod引用了modules(即github.com/hashicorp/vault),但一个模块可以包含许多包(即github.com/hashicorp/vault/api、github.com/hashicorp/vault/commands等)。 -
@Adrian:
vault/api是一个子模块,而不仅仅是vault中的一个包。 Vault 具有相当复杂的模块结构,其中包含多个单独版本的子模块 -
@EliBendersky 我知道这个例子是与 Vault 相关的,我对围绕根 go.mod 和子模块 go.mod 的一般原则更感兴趣,我将把这个问题改写得更清楚跨度>
-
@EliBendersky 我已经改变了问题,这更有意义吗?
标签: go hashicorp-vault