将/ vendor转换为Go模块,找不到提供包错误的模块

时间:2019-05-06 18:50:05

标签: go

转换带有/ vendor目录的现有项目以使用Go Modules(1.12版)。我执行go mod init来生成go.mod文件。然后,我执行go get -u ./...来填充go.mod文件。在此期间,它将尝试在不再存在的github上找到一个包。它在我的/ vendor目录中提供。

在我可以升级代码以使用其他软件包之前,如何继续转换为使用模块?也就是说,我想保留一些东西(在/ vendor下也有一些修改的代码),而其他东西则由go模块处理。

1 个答案:

答案 0 :(得分:2)

您不能混合使用vendor目录行为和模块,每种依赖关系解析方法都不能使用其他方法。您可以自己将丢失的软件包重新发布到go mod可以找到的位置,也可以将其直接重定向到模块中现有的供应商源。

要重定向模块的源代码,请使用go.mod文件中的replace directive

replace missing/package v0.0.1 => ./vendor/missing/package