【4】Gomodule依赖管理

go module是Go1.11版本之后官方推出的版本管理工具,且从Go1.13版本开始Go module作为Go语言默认的以来管理工具

  • GOMODULE
    • 要想使用GOMODULE首先要设置环境变量GOMODILE,通过它来实现开启或关闭模块的支持,它有三个值可选:off、on、auto,默认是auto。
      • GOMODULE=off:禁用模块支持,编译时会从GOPATH和vendor文件夹中找包
      • GOMODULE=on:启动模块支持,编译时会忽略GOPATH和cvendor文件夹,只根据go.mod下载依赖
      • GOMODULE=auto:当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持
    • 总结:一般我们设置GOMODULE=on之后就可以使用Gomodule了,而GOMODULE=off其实类似yum本地源仓库的意思,只会在本地的仓库中寻找包,使用gomodule管理依赖后会在根目录下生产两个文件,go.mode和go.sum
  • GOPROXY
    • GOPROXY,顾名思义就是代理。我们通过GOMDULE拉取包的地址,额其实也就是类似yum里面的那个指定yum镜像源的地址的意思。

go env -w GOPROXY=https://goproxy.cn,direct

  • 常用GOMOD命令
    • go.mod命令如下:

go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)且下载全部依赖 go mod edit 编辑go.mod文件 go mod graph 打印模块依赖图 go mod init 初始化当前文件夹, 创建go.mod文件(后面指定包名或地址) go mod tidy 增加缺少的module,删除无用的module(自动刷新) go mod vendor 将依赖复制到vendor下 go mod verify 校验依赖 go mod why 解释为什么需要依赖

  • go.mod文件组成
    • module 定义包名
    • require 定义依赖包以及版本
    • indirect 间接引用

module github.com/Q1mi/studygo/blogger go 1.12 require ( github.com/DeanThompson/ginpprof v0.0.0-20190408063150-3be636683586 github.com/gin-gonic/gin v1.4.0 github.com/go-sql-driver/mysql v1.4.1 github.com/jmoiron/sqlx v1.2.0 github.com/satori/go.uuid v1.2.0 google.golang.org/appengine v1.6.1 // indirect )

  • go get
    • 下载依赖包除了我们从go.mod文件中配置以外我们还可以在命令行直接go get下载依赖包
      • 运行go get -u将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
      • 运行go get -u=patch将会升级到最新的修订版本
      • 运行go get package@version将会升级到指定的版本号version
  • 依赖整理
    • 有的时候我们用不上这个依赖,会从源文件删除import,但是go.mod中并不会自动删除,我们需要执行go mod tidy来跟新下go mod
  • go mod exit
    • 我们除了申明式从go mod中添加依赖之外我们还可以以命令式的方式添加依赖

//格式化文件(不是go.mod文件,是格式化依赖包的文件) go mod edit //添加依赖 go mod edit -require=golang.org/x/text //移除依赖 go mod edit -droprequire=golang.org/x/text

  • 如何使用GoModule
    • 当我们从别人的项目中复制源码过来的时候
      • 第一步:在项目目录执行go mod init,来生成go.mod文件
      • 第二步:执行go get,查找项目使用的依赖,并会同时生成一个go.sum用来记录依赖的详细版本和哈希值
    • 当一个新项目的时候
      • 执行go mod init 项目名 来生成go.mod文件
      • 编辑go.mod来指定依赖
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值