13

我正在尝试从 Jenkins-X/jx 导入来定制一些东西。

我真的很陌生

但试图go get ./...失败。

我的 go.mod 文件

module github.com/my-org/my-project

go 1.13

require github.com/jenkins-x/jx v2.0.383

我明白了

... require github.com/jenkins-x/jx: version "v2.0.383" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2

这是因为 jx 在其 mod 文件中有一些要求

但我不确定我必须做什么才能实际下载该模块。

4

2 回答 2

1

对于任何希望使用一些简洁的 Jenkins-x 函数进行编译的人,我能够与创建者交谈并发现了一些事情。

  1. 1.12.4
  2. 看看他们的灯塔项目,它有一个go.mod并使用 jenkins-x/jx 作为要求
  3. 正如评论中提到的,一旦项目高于主要版本 1,基本上 go.mod 使用0.0.0-timestamp-commithash
于 2020-01-24T19:35:10.520 回答
0

当您尝试获取主要版本等于或高于 的模块v2,但它们自己的go.mod文件或您的导入路径缺少必要的/vN后缀时,会发生此错误。

这是基于语义导入路径

如果模块是 v2 或更高版本,则模块的主要版本必须包含/vN在 go.mod 文件中使用的模块路径的末尾

使用您的示例,此命令失败并出现您的问题中的错误:

go get github.com/jenkins-x/jx@v2.0.383

如果需要v2.x.x,则必须将模块获取为(注意/v2前面的末尾@):

go get github.com/jenkins-x/jx/v2@v2.0.383

但是版本中的项目go.mod文件将模块路径声明为,因此您仍然无法使用后缀获取它,因为他们没有那样声明它。它将失败:jenkins-x/jxv2.0.383module github.com/jenkins-x/jx/v2

github.com/jenkins-x/jx/v2@v2.0.383:go.mod 有非.../v2 模块路径“github.com/jenkins-x/jx”(和.../v2/go. mod 不存在)在版本 v2.0.383

这在以后的版本中得到了修复。您可以运行go get github.com/jenkins-x/jx/v2@latest将解析为v2.1.155.

如您所见,这个问题可能不是您的错。在这种情况下,您只能要求存储库维护者修复他们go.mod并遵守语义版本控制。

或者,您可以在本地克隆 repo 并使用replace指令,但这实际上只能在本地工作。


注意:如果项目是v2或更高版本并且没有文件go.mod则会导致依赖+incompatible

于 2021-11-14T20:38:17.197 回答