我一直在通过滑行将现有的项目从使用独立依赖项转换为使用Go 1.11.x 模块支持。但我在一个项目中遇到了一个特殊情况,使用的模块是我无法解决的。
内部项目'foo‘通过"go mod供应商“获得了它的依赖关系:
projects/src/foo/
main.go
vendor/
...这在内部构建该项目时非常有用,因为非go开发人员可以将项目克隆到任何位置并构建它,而无需外部代理访问来下载依赖项。
现在,我正在尝试允许项目“bar”使用库“foo”构建一个工具。
package bar
import "internal.com/project/foo""go.mod“文件只包含:
module internal.com/project/bar
require internal.com/project/foo v0.0.0-...我将通过以下方式提供供应商:
go module vendor我通过:
go build -mod=vendor我看到的是'foo‘将从内部git中克隆,它的所有依赖项都将从它们的远程git源文件中下载,并且我的'go.sum’文件将被更新为所有的临时依赖项。但是我真正想要的是只从我的内部网络中获取'foo‘,并让它平缓依赖关系。理想情况下,不应该有外部http请求。
这有可能吗?在直接构建项目"foo“时,"-mod=vendor”标志非常有用。但它似乎不适用于这里,因为项目“酒吧”不想供应商。它希望得到一个主要的依赖项,那就是它。Go模块支持似乎并不关心扁平化的临时依赖关系。
以前,当使用glide作为包管理器时,它会从内部的git中获取'foo‘,然后将其所有依赖项都压平到我的供应商目录中。
最初作为https://groups.google.com/d/topic/golang-nuts/W8M4nOl54KQ/discussion发布,没有回复。
发布于 2018-10-06 08:28:55
它只是目前不这样工作,只使用顶级供应商目录。来自模块帮助
若要使用主模块的顶级供应商目录进行构建以满足依赖关系(禁用常用网络源和本地缓存的使用),请使用“go build = directory”。注意,只使用主模块的顶级供应商目录;其他位置的供应商目录仍然被忽略。
对于这个特定的用例,我建议等到go modules成熟。
https://stackoverflow.com/questions/52600915
复制相似问题