使用 go modules 是推荐的方法。您必须使用go mod vendor命令将模块复制到开发环境中的供应商目录(显然需要首先下载包)。go mod vendor不会将软件包下载到供应商目录中,它会从您在开发环境中可能位于$GOPATH/pkg/mod或类似的东西中的先前下载的模块中复制它们,并将其保存在您的供应商文件夹中,以便在生产中您不需要下载它们。然后,您将使用go build -mod vendor.所以总结一下:在您的代码中导入您的包获取依赖进入$GOPATH/pkg/mod或类似路径:(go get github.com/name/project@v1.0此步骤实际上是可选的)将包从复制$GOPATH/pkg/mod到vendor:go mod vendor编译代码:go build -mod vendor
只是为了扩展您对问题的评论,是的,使用 go 模块,但这仍然不能解决您的请求,您将需要使用模块和 go modules 提供的供应商选项。然后您的所有依赖项将存储在您的存储库内的供应商文件夹中,您签入该文件夹,然后用户只需签出您的存储库并拥有所有依赖项。还要查看 go env 变量GOFLAGS=-mod=vendor,您需要为 go 工具设置它来查看您的供应商与检查网络(我在我们的构建管道上设置了它)有关该 env 变量的详细说明,请参阅https://github.com/golang/go/issues/27227