• golang 依赖管理


    使用GOPATH管理依赖

    go 1.6 前,GOPATH作为第三方的依赖目录。

    GOPATH 默认位置~/go(linux, unix, Mac)

    临时GOPATH

    export GOPATH=/path/to/dir
    export GO111MODULE=off
    

    第三方库存放位置,GOPATH目录下的src目录下,/path/to/dir/src

    依赖查找路径

    1. GOROOT
    2. GOPATH

    使用GOVENDER管理依赖

    go 1.6 版本发布,vender目录被添加到除GOPATHGOROOT之外的依赖目录。

    依赖查找路径

    1. 当前目录中vender目录下
    2. 向上级查找,直到找到src下的vender目录
    3. GOROOT
    4. GOPATH

    使用GO111MODULE管理依赖

    go 1.8 加入 gomod 作为依赖管理。

    特点: 依赖由go命令统一管理,开发者不用关心目录结构。

    Usage

    常用命令列表

    • go mod init 初始化模块,例如 go mod init github.com/wjp2013/hello
    • go build, go test 和其它构建命令会自动为 go.mod 添加新的依赖
    • go get 改依赖关系的所需版本(或添加新的依赖关系)
    • go list -m all 列出当前模块及其所有依赖项
    • go mod tidy 拉取缺少的模块,移除不用的模块

    不常用命令

    • go mod download 下载依赖包到本地 cache
    • go mod edit 编辑 go.mod 文件,选项有 -json、-require 和 -exclude,可以使用帮助 go help mod edit
    • go mod graph 打印模块依赖图
    • go mod vendor 将依赖复制到 vendor 目录
    • go mod verify 验证依赖是否正确
    • go mod why 解释为什么需要依赖

    使用示例

    开启GO111MODULE

    Go Modules 是否启用目前由环境变量 GO111MODULE 控制。

    1. 临时修改

      export GO111MODULE=off
      
    2. 修改全局变量

      go env -w GO111MODULE=on
      

    使用过程

    1. 创建go mod

      go mod init test.com 会在当前目录下创建一个 go.mod 文件,模块名为test.com

    2. 生成依赖

      • 方法1: 有了模块定义,然后执行 go mod tidy 会自动生成依赖,填充 go.mod, go.sum 文件。
      • 方法2: 修改源码用 import 引入模块 然后执行 go build, go test 等命令,会更新 go.mod, go.sum 文件。
    3. 更新依赖

      go list -m all 查看当前项目正在使用的 package 版本,然后执行 go get xxx/xxx 来更新指定的 package, 再执行 go test 会自动更新 go.mod 文件。

    升级依赖项

    >$ go list -m -versions github.com/gin-gonic/gin
    // 将会列出 Gin 版本历史
    github.com/gin-gonic/gin v1.1.1 v1.1.2 v1.1.3 v1.1.4 v1.3.0
    

    将版本更新到上个版本,这里只是个演示。

    >$ go get github.com/gin-gonic/gin@v1.1.4 // 只需要在依赖后面加上 @version 就可以了
    >$ go list -m all
    // 看到了版本变化
    github.com/gin-gonic/gin v1.1.4
    

    或者可以使用 go mod 来进行版本的切换,这样就需要两个步骤了:

    >$ go mod edit -require="github.com/gin-gonic/gin@v1.1.4" // 修改 go.mod 文件
    >$ go mod tidy //下载更新依赖
    

    Go 国内加速镜像

    国内网络访问国外资源经常会出现不稳定的情况。因此设置 CDN 加速代理就很有必要了,以下是几个速度不错的提供者:

    使用方法

    # 启用 Go Modules 功能
    go env -w GO111MODULE=on
    
    # 配置 GOPROXY 环境变量
    go env -w  GOPROXY=xxxx
    

    Refer: Go module

  • 相关阅读:
    左旋转字符串
    swoole(8)http服务
    整数反转
    两数之和
    广度优先搜索
    快速排序
    JavaScript当中的eval函数
    JavaScript中的作用域链原理
    git push和git pull
    cherry-pick,revert和rebase使用的3-way合并策略
  • 原文地址:https://www.cnblogs.com/hiyang/p/12695155.html
Copyright © 2020-2023  润新知