本篇文章為大家展示了如何進行管理工具go modules的使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元白山做網(wǎng)站,已為上家服務(wù),為白山各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
由于之前寫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版本引入的。相對于之前要么是沒有包管理,要么是管理工具不好用
查看golang的版本,確保在1.11及以上版本 go version
go version go1.15.2 darwin/amd64
設(shè)置GO111MODULE為on GO111MODULE 有三個值 : off,on,auto(默認)
off 關(guān)閉go mod的功能,查找包沿用一起的GOPATH模式或者通過vendor目錄方式
on 開啟go mod功能,不會去查找GOPATH目錄
auto,分情況,
當前目錄在GOPATH/src之外且該目錄包含go.mod文件,會開啟go mod功能
當前文件在包含go.mod文件的目錄下面
初始化項目 直接在當前項目下執(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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。