温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-01-06 16:34:50 来源:亿速云 阅读:135 作者:柒染 栏目:云计算

本篇文章为大家展示了如何进行管理工具go modules的使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

背景

由于之前写k8s operator在引入go的包的时候,涉及到go的包管理工具,因为自己写java已经很多年,maven的包管理工具很是好用,便想到golang是否也有类似的工具, goer都知道go的包引入带上github.com类似的前缀,就会自动从go的第三方检索服务pkg.go.dev下载对应的文件,而该检索服务会定期从github更新最新的代码。

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

使用

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

  2. 设置GO111MODULE为on GO111MODULE 有三个值 : off,on,auto(默认)

  • off 关闭go mod的功能,查找包沿用一起的GOPATH模式或者通过vendor目录方式

  • on 开启go mod功能,不会去查找GOPATH目录

  • auto,分情况,

    1. 当前目录在GOPATH/src之外且该目录包含go.mod文件,会开启go mod功能

    2. 当前文件在包含go.mod文件的目录下面

  1. 初始化项目 直接在当前项目下执行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的使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI