go mod vendors 旧版本的依赖

标签 go dependencies

我升级到 go1.11 并且正在尝试使用 go 模块。我克隆了一个项目并运行 go build,它创建了一个包含我所有依赖项的 go.modgo.sum 文件。

现在我想提供文件,所以我运行命令 go mod vendor

不幸的是,mod vendor 使用旧版本的 go-bindata .我的项目无法构建,因为函数调用不存在。查看 vendored go-bindata 的源代码,我可以看到它与 go-bindata 项目的 master 分支中可用的不同。

在我的 go.mod 文件中有这个:

github.com/jteeuwen/go-bindata v3.0.7+incompatible

在我的 go.sum 文件中,有这个:

github.com/jteeuwen/go-bindata v3.0.7+incompatible h1:91Uy4d9SYVr1kyTJ15wJsog+esAZZl7JmEfTkwmhJts=
github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs=

在 GitHub 上,go-bindata 的最新标签是 master 分支上的 v3.0.7。

关于为什么 go mod 引用旧版本的任何想法以及我该如何解决这个问题。在另一台机器上,运行 go get -u https://github.com/jteeuwen/go-bindata 获取最新的项目。为什么 go mod 不做同样的事情?

编辑: 问题是 go mod 说它获得了 v3.0.7,但源代码与 Github 上当前可用的 3.0.7 标签不匹配。我在本地拥有的内容看起来像 v3.0.6,但被标记为 v3.0.7。

在Github上的版本中,有一个结构是这样的: link to source

type Config struct {
     //... some other fields
     NoMetadata bool
}

但在我的本地销售版本中,Config 结构没有 NoMetadata 字段。 看起来 go mod 使用的是旧标签,但认为它使用的是最新标签。

最佳答案

该存储库的最新标签是 v3.0.7,所以这就是 go mod 给你的。来自 the FAQ :

If a repository has not opted in to modules but has been tagged with valid semver tags (including the required leading v), then those semver tags can be used in a go get, and a corresponding semver version will be record in the importing module's go.mod file.

问题是您想要的代码不在 3.0.7 标记中,而是在 master 分支中吗?


查看更新中的特定 NoMetadata 字段,它已添加到 https://github.com/jteeuwen/go-bindata/commit/7f4fb1184ff6bab28016ed674b61864665ba3d97 中, 于 2015-08-13。同时,在 2014-11-20 标记了 v3.0.7

所以看起来您感兴趣的更改没有标记并且只在 master 分支上。

鉴于这种情况,您可以直接 fork 存储库——它自 2015 年以来一直没有维护(并且 README 承认它没有维护)。或者找到一些保持最新的东西。或者说服维护者创建一个新标签。

关于go mod vendors 旧版本的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611118/

相关文章:

go - 将自定义类型断言为基本类型

javascript - 使用 GoLang http.FileServer 时找不到 React 脚本

Meteor 1.3 React npm 冲突

maven - Artifactory 中的依赖解析配置

json - 将 API 请求函数传递给另一个函数 GoLang

Go 中的 php json_encode

postgresql - 尝试插入 postgresql 时 conn 关闭

linux - centOS 安全中心 yum 安装依赖项失败

java - 避免全局状态而不困惑构造函数

java依赖分析