我正在尝试将一个Go项目转换为新的模块标准,但是遇到一个依赖项的问题。
该存储库已出售了一个库(在本例中为golang.org/x/net/html)来为该库添加一些功能;意味着它已经修改了供应商依赖性(向结构添加了一个方法)。
所以问题在于,在执行go mod init
之后,当我执行go get ./...
时,系统抱怨调用了该已添加的功能,因为它忽略了修改后的供应商,而是尝试导入上游库。
有什么办法让go mod
知道它应该使用供应商依赖性?
答案 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
请注意,require
和replace
都是必需的。
答案 1 :(得分:0)
在go1.15
之后,您可以使用-mod=readonly
进行构建,以避免仅从供应商目录中导入。
示例:
go build -mod=readonly -o ./build/project -ldflags "-s -w" main.go