溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進行管理工具go modules的使用

發(fā)布時間:2022-01-06 16:34:50 來源:億速云 閱讀:133 作者:柒染 欄目:云計算

本篇文章為大家展示了如何進行管理工具go modules的使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

背景

由于之前寫k8s operator在引入go的包的時候,涉及到go的包管理工具,因為自己寫java已經(jīng)很多年,maven的包管理工具很是好用,便想到golang是否也有類似的工具, goer都知道go的包引入帶上github.com類似的前綴,就會自動從go的第三方檢索服務(wù)pkg.go.dev下載對應(yīng)的文件,而該檢索服務(wù)會定期從github更新最新的代碼。

go mod 是golang 1.11版本引入的。相對于之前要么是沒有包管理,要么是管理工具不好用

使用

  1. 查看golang的版本,確保在1.11及以上版本 go version go version go1.15.2 darwin/amd64

  2. 設(shè)置GO111MODULE為on GO111MODULE 有三個值 : off,on,auto(默認)

  • off 關(guān)閉go mod的功能,查找包沿用一起的GOPATH模式或者通過vendor目錄方式

  • on 開啟go mod功能,不會去查找GOPATH目錄

  • auto,分情況,

    1. 當前目錄在GOPATH/src之外且該目錄包含go.mod文件,會開啟go mod功能

    2. 當前文件在包含go.mod文件的目錄下面

  1. 初始化項目 直接在當前項目下執(zhí)行go mod init,則會在當前項目下建立go.mod文件 如果該項目在GOPATH目錄下,且沒設(shè)置GO111MODULE為on,則會報錯:

go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'

再執(zhí)行go build 則會把項目依賴的文件自動添加到go.mod中且會生成go.sum文件,
如果有存在包依賴沖問題,直接修改按照提示修改go.mod文件對應(yīng)的版本就可以。 如:

../../../../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 即可

關(guān)于使用go mod管理的話,依賴包的下載會下到$GOPATH/pkg/mod目錄下,而不再是$GOPATH/src目錄下

上述內(nèi)容就是如何進行管理工具go modules的使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI