您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行管理工具go modules的使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
由于之前寫k8s operator在引入go的包的時候,涉及到go的包管理工具,因為自己寫java已經很多年,maven的包管理工具很是好用,便想到golang是否也有類似的工具, goer都知道go的包引入帶上github.com類似的前綴,就會自動從go的第三方檢索服務pkg.go.dev下載對應的文件,而該檢索服務會定期從github更新最新的代碼。
go mod 是golang 1.11版本引入的。相對于之前要么是沒有包管理,要么是管理工具不好用
查看golang的版本,確保在1.11及以上版本 go version
go version go1.15.2 darwin/amd64
設置GO111MODULE為on GO111MODULE 有三個值 : off,on,auto(默認)
off 關閉go mod的功能,查找包沿用一起的GOPATH模式或者通過vendor目錄方式
on 開啟go mod功能,不會去查找GOPATH目錄
auto,分情況,
當前目錄在GOPATH/src之外且該目錄包含go.mod文件,會開啟go mod功能
當前文件在包含go.mod文件的目錄下面
初始化項目 直接在當前項目下執行go mod init
,則會在當前項目下建立go.mod文件 如果該項目在GOPATH目錄下,且沒設置GO111MODULE為on,則會報錯:
go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
再執行go build
則會把項目依賴的文件自動添加到go.mod中且會生成go.sum文件,
如果有存在包依賴沖問題,直接修改按照提示修改go.mod文件對應的版本就可以。 如:
../../../../pkg/mod/k8s.io/client-go@v11.0.0+incompatible/kubernetes/scheme/register.go:26:2: module k8s.io/api@latest found (v0.19.4), but does not contain package k8s.io/api/auditregistration/v1alpha1
go.mod module github.com/monkeyboy123/custom-controller go 1.15 require ( github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/imdario/mergo v0.3.11 // indirect golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e // indirect k8s.io/api v0.19.4 // indirect k8s.io/apimachinery v0.19.4 k8s.io/client-go v11.0.0+incompatible k8s.io/klog v1.0.0 // indirect k8s.io/utils v0.0.0-20201110183641-67b214c5f920 // indirect )
直接修改k8s.io/client-go v11.0.0+incompatible為k8s.io/client-go v0.19.4 即可
關于使用go mod管理的話,依賴包的下載會下到$GOPATH/pkg/mod目錄下,而不再是$GOPATH/src目錄下
上述內容就是如何進行管理工具go modules的使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。