新的 Go 版本 1.11 引入了很棒的模塊概念。在文檔中它說有四個指令可以在一個go.mod文件中使用:module, require, exclude, replace.它還解釋說:exclude 和 replace 指令僅在當前(“主”)模塊上運行。構建主模塊時,將忽略除主模塊之外的模塊中的排除和替換指令。因此,replace 和 exclude 語句允許主模塊完全控制自己的構建,而無需完全控制依賴項。但我仍然不明白該exclude指令是如何工作的。有人可以向我解釋該exclude指令是如何工作的嗎?如果可能的話,請舉例說明何時使用它?
2 回答

阿晨1998
TA貢獻2037條經驗 獲得超6個贊
這是一個半假設的假設示例:
go.mod
module github.com/example/project
require (
github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc
github.com/google/uuid v1.1.0
)
exclude github.com/SermoDigital/jose v0.9.1
replace github.com/google/uuid v1.1.0 => git.coolaj86.com/coolaj86/uuid.go v1.1.1
排除
對于包github.com/SermoDigital/jose
,它有一個正確的 git 標簽v0.9.1
,但當前版本是v1.1
,這不是一個正確的 git 標簽(缺少“補丁”版本)。
通過排除版本正確(但不工作)的代碼,它會導致從中獲取 go mod master
(版本不正確,但具有工作代碼)。
代替
同樣(并且確實是假設的),如果我有一個補丁github.com/google/uuid
,我可以創建一個分支并使用它replace
來獲取我自己的版本,同時等待上游版本接受(或不接受)我的補丁。
- 2 回答
- 0 關注
- 189 瀏覽
添加回答
舉報
0/150
提交
取消