想象一下,您有一个需要两个模块A
和B
. 我将调用项目模块P
。假设P
需要A v1.0.0
,B v1.1.0
并且A
需要B v1.0.0
。此外B
,没有遵守语义版本控制规则,因此版本更改v1.0.0 -> v1.1.0
引入了破坏性 API 更改。所以
P
只能用v1.1.0
和A
只用 构建v1.0.0
。
依赖图:
P -> A (v1.0.0) -> B(v1.0.0)
P -> B (v1.1.0)
有什么方法可以用不同的版本构建这个项目。我听说过供应商,但我不确定这是否会导致依赖项使用不同的B
模块版本。
如果它可以为冲突的包版本提供解决方案,如果依赖项在其 git 存储库中不包含供应商文件夹(有人说,您不应该上传供应商文件夹),go 工具是否会使用供应商识别模块(在此case 模块A
不附带供应商文件夹,但开发人员go mod vendor
在本地调用),go get 命令是否尊重依赖项的供应商文件夹(或者它是否可以检测到模块在没有上游供应商文件夹的情况下使用了供应商)?