簡體   English   中英

Go 模塊用 v0.0.0- 替換了顯式版本<timestamp> ——<revision> 在 go.mod 中

[英]Go modules replaces an explicit version with v0.0.0-<timestamp>-<revision> in go.mod

我最近在我的 Go 項目中添加了一個功能,這可能會破壞使用它的其他項目。 我決定通過添加一個匹配的 git 標簽2.0.0 (以前是1.xx )來為這個項目“A”增加一個主要版本。 在我需要它的另一個項目“B”中,我更新了它的go.mod文件,如下所示:

module gitlab.mydomain.com/namespace/B

go 1.12

require (
    gitlab.mydomain.com/namespace/A v2.0.0
)

如您所見,我特別提到了v2.0.0 ,但是一旦我運行 B,A 的版本就會被v0.0.0-<timestamp>-<revision>覆蓋。

我確保標簽存在於遙控器中。

我在這里缺少什么?

從主要版本2v2及更高版本)開始,您必須修改導入路徑,您必須將主要版本添加為導入路徑的后綴。 您必須將包導入為:

import "gitlab.mydomain.com/namespace/A/v2"

這也必須出現在go.mod如:

require gitlab.mydomain.com/namespace/A/v2 v2.0.0

由於主要版本代表 Semver 中不兼容的更改,因此它們的導入路徑也必須不同(相同的導入路徑表示相同的依賴項)。 這是導入兼容性規則

如果舊包和新包具有相同的導入路徑,
新包必須與舊包向后兼容。

Go Modules Wiki 中閱讀更多相關信息:為什么主版本號必須出現在導入路徑中?

以及博客文章: Go 博客:Go 模塊:v2 及更高版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM