我正在尝试将一个 Go 项目转换为新的模块标准,但我遇到了一个依赖项的问题。
该存储库提供了一个库(在本例中为 golang.org/x/net/html)以向该库添加一些功能;这意味着它已经修改了 vendored 依赖项(向结构添加了一个方法)。
所以问题是,在我执行之后go mod init
,当我执行go get ./...
系统抱怨调用该附加功能时,因为它忽略了修改后的供应商并尝试导入上游库。
有没有办法让go mod
知道它应该使用 vendored 依赖项?
我正在尝试将一个 Go 项目转换为新的模块标准,但我遇到了一个依赖项的问题。
该存储库提供了一个库(在本例中为 golang.org/x/net/html)以向该库添加一些功能;这意味着它已经修改了 vendored 依赖项(向结构添加了一个方法)。
所以问题是,在我执行之后go mod init
,当我执行go get ./...
系统抱怨调用该附加功能时,因为它忽略了修改后的供应商并尝试导入上游库。
有没有办法让go mod
知道它应该使用 vendored 依赖项?
You can try replace
directive. Something along the lines of
First
cd ./vendor/golang.org/x/net/html
go mod init
Then in your root 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
Note that both require
and replace
are required.
之后go1.15
您可以构建-mod=readonly
以避免仅从供应商目录导入。
例子:
go build -mod=readonly -o ./build/project -ldflags "-s -w" main.go