【发布时间】:2018-11-17 00:43:50
【问题描述】:
我正在编写一个依赖于某些导入的库包,但我不确定如何正确处理它。
让我从目录结构开始:
go/src/github.com/
├── developer A/
│ ├── project 1
│ └── project 2
│
└── developer B/
└── project 3
└── vendor
└── project 4
项目 1 是一个库。它在项目 2 中使用并被拉入 2s 供应商文件夹。因此,项目 1 应包含其所有依赖项,以便客户端(例如项目 2)也不需要拉取它们。但是,项目 1 的一个依赖项是项目 4,它包含在项目 3 的供应商文件夹中。至关重要的是,此依赖项始终是项目 3 提供的版本。Go 不允许导入指向供应商文件夹内的包,因此我无法直接从那里导入它。我该如何通过 govendor 解决这个问题?
【问题讨论】:
-
您控制项目 3 吗?通常,库不应该提供它们的依赖项——只有最终产品应该。库应改为使用
dep或类似工具声明其依赖项。 -
不,我不控制项目 3。我控制项目 1 和 2。我试图将项目 4 的相同版本拉入项目 2 的供应商文件夹,但这不起作用,因为 Go 认为这些是不同的类型,因为它们位于不同的存储库中。