一尘不染

修复go使用的工具版本

go

我正在寻找用go创建可复制的版本。对于单个项目,我们使用滑行。

因此,例如,我使用:

glide get github.com/stretchr/testify

修复“证明”包的版本。但是,这不适用于工具。例如:

glide install github.com/tebeka/go2xunit

返回成功,但实际上未安装go2xunit,因此我必须使用:

go get github.com/tebeka/go2xunit

它将 go2xunit 安装到 $ GOPATH / bin

问:如何修复go2xunit等工具的版本?

我还注意到,glide表示改用dep,而
dep表示golang已脱离其实现,可能最终会使用基于vgo的东西。有大量的依赖管理工具可以使用,也许其中一个鲜为人知的工具支持此功能?

如果与之相关,我使用Debian9提供的go 1.7.4。


阅读 269

收藏
2020-07-02

共1个答案

一尘不染

使用go模块的go1.11解决方案是创建一个伪造的工具包。您可以如下创建一个
tools.go 文件:

// +build tools

package tools

import (
        _ "github.com/tebeka/go2xunit"
)

+ build tools是一个神奇的注释,它阻止构建软件包。

>go mod init tools

将为假 工具 包创建一个 go.mod 文件 __

>go install github.com/tebeka/go2xunit

将如下安装go2xunit并更新go.mod。

module tools

require github.com/tebeka/go2xunit v1.4.8 // indirect

现在,如果您将来运行 go install github.com/tebeka/go2xunit
(对于干净的构建说),它的版本将由go.mod固定为v1.4。


对于1.11之前的版本,要使用的工具是retool。它是这样的:

引导程序:

go get github.com/twitchtv/retool

添加工具:

retool add github.com/jteeuwen/go-bindata/go-bindata origin/master

使用工具:

retool do go-bindata -pkg testdata -o ./testdata/testdata.go ./testdata/data.json

对此的支持可能是针对go
1.12的路线图(https://github.com/golang/go/issues/27653

2020-07-02