4

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

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

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

有没有办法让go mod知道它应该使用 vendored 依赖项?

4

2 回答 2

2

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.

于 2019-04-07T03:30:25.413 回答
0

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

例子:

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

于 2020-11-27T07:53:38.150 回答