Go 位于另一个项目中的供应商包';s供应商文件夹

Go 位于另一个项目中的供应商包';s供应商文件夹,go,govendor,vendoring,Go,Govendor,Vendoring,我正在编写一个依赖于某些导入的库包,但我不确定如何正确处理它 让我从目录结构开始: go/src/github.com/ ├── developer A/ │ ├── project 1 │ └── project 2 │ └── developer B/ └── project 3 └── vendor └── project 4 项目1是一个库。它用于项目2中,并被拉入2s供应商文件夹。因此,项目1应该包含它的所有依赖项,这样客

我正在编写一个依赖于某些导入的库包,但我不确定如何正确处理它

让我从目录结构开始:

go/src/github.com/
├── developer A/
│   ├── project 1
│   └── project 2
│   
└── developer B/
    └── project 3
        └── vendor
            └── project 4

项目1是一个库。它用于项目2中,并被拉入2s供应商文件夹。因此,项目1应该包含它的所有依赖项,这样客户机(例如项目2)就不需要拉它们了。然而,项目1的一个依赖项是项目4,它包含在项目3s供应商文件夹中。至关重要的是,此依赖关系始终与project 3提供的版本完全相同。Go不允许导入指向供应商文件夹中的包,所以我不能直接从那里导入。如何使用Govendo解决此问题?

Go不会让您进入另一个项目的供应商目录。听起来您的意图是确保版本。这就是
go模块
的任务。查看以获取更多信息。

Go不会让您访问其他项目的供应商目录。听起来您的意图是确保版本。这就是
go模块
的任务。查看以了解更多信息。

您是否控制项目3?作为一项规则,库不应该提供它们的依赖项——只有最终产品应该提供。相反,库应该使用
dep
或类似工具声明它们的依赖关系。不,我不控制project 3。我控制项目1和项目2。我试图将相同版本的project 4拉入project 2s供应商文件夹,但这不起作用,因为Go认为这些类型不同,因为它们位于不同的存储库中。您是否控制project 3?作为一项规则,库不应该提供它们的依赖项——只有最终产品应该提供。相反,库应该使用
dep
或类似工具声明它们的依赖关系。不,我不控制project 3。我控制项目1和项目2。我试图将相同版本的Project4拉入Project2S供应商文件夹,但这不起作用,因为Go认为这些类型不同,因为它们位于不同的存储库中。这看起来不错。但是,我现在被GOO1.1.4所困扰,不能使用模块。关于使用<代码> GLIDE 或 GODEP >?那些也适用,但是我必须建议Go1.9在Go1.11发布时不再支持Go1.9。我也倾向于对选择非
go mod
的团队提出警告,因为这可能是该领域的赢家。这看起来不错。但是,我现在被GOO1.1.4所困扰,不能使用模块。关于使用<代码> GLIDE 或 GODEP >?那些也适用,但是我必须建议Go1.9在Go1.11发布时不再支持Go1.9。我也倾向于对选择非
go mod
的团队提出警告,因为这可能是该领域的赢家。