我在我的项目和构建系统(例如 Travis CI)中使用 Go 模块,我正在下载一个命令行实用程序(用 Go 编写)go get
协助我的构建过程,例如:
go get github.com/mitchellh/gox
然而,这go get
导致文件被添加到我的go.mod
文件。这会污染构建环境,导致它变得“脏”(因为 git 中跟踪的某些文件发生了更改,在本例中为 go.mod 和 go.sum),我使用git describe --always --dirty --tag
描述我的构建,它显示为“脏”。
有没有办法“获取”二进制文件来下载它,而不将其添加到 go.mod/go.sum 中?
我尝试过将 GOPATH 设置到其他地方,即使如此,go get
更新 go.mod/go.sum 将其添加为// indirect
依赖性。
dir="$(mktemp -d)"; \
env GOPATH="$dir" go get github.com/mitchellh/gox && \
mv "$dir/bin/gox" "$(go env GOPATH)"/bin/gox
转到 1.16 及以上
Go 1.16(2021 年 2 月发布)包含一项更改,可以在不影响的情况下安装二进制文件go.mod
.
问题 40276 https://golang.org/issue/40276跟踪提案:
cmd/go:“go install”应该在模块外部以模块模式安装可执行文件
这是在CL 254365 https://go-review.googlesource.com/c/go/+/254365。作为此更改的一部分,您可以运行例如:
go install golang.org/x/tools/cmd/goimports@latest
安装二进制文件而不影响go.mod
.
要安装特定版本,请替换@latest
例如@v0.1.5
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)