zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/hiyang/p/12695155.html
Copyright © 2011-2022 走看看