与修改后的供应商一起使用模块和依赖项

时间:2019-04-06 09:15:44

标签: go go-modules govendor

我正在尝试将一个Go项目转换为新的模块标准,但是遇到一个依赖项的问题。

该存储库已出售了一个库(在本例中为golang.org/x/net/html)来为该库添加一些功能;意味着它已经修改了供应商依赖性(向结构添加了一个方法)。

所以问题在于,在执行go mod init之后,当我执行go get ./...时,系统抱怨调用了该已添加的功能,因为它忽略了修改后的供应商,而是尝试导入上游库。

有什么办法让go mod知道它应该使用供应商依赖性?

2 个答案:

答案 0 :(得分:0)

您可以尝试replace指令。类似于

第一

cd ./vendor/golang.org/x/net/html
go mod init

然后在您的根go.mod

module your/super/module

replace golang.org/x/net/html => ./vendor/golang.org/x/net/html

require golang.org/x/net/html v0.0.0

请注意,requirereplace都是必需的。

答案 1 :(得分:0)

go1.15之后,您可以使用-mod=readonly进行构建,以避免仅从供应商目录中导入。

示例:

go build -mod=readonly -o ./build/project -ldflags "-s -w" main.go