glide 是golang项目开发中是特别重要的软件,没有它,golang的项目可能都无法发布。

为什么要使用glide

平时我们开发Go项目的时候,使用第三方的包的时候都直接使用go get 去获取第三方的包,但是go get获取到的包是项目的develop分支,我们开发的时候倒是可以不怎么关注。但是如果到了生产环境,直接使用go get 是有很大风险的,因为,众所周知,develop是开发分支,维护者会把新的代码push到开发分支,如果我们使用go get的话,可能我们每次发布版本获取到的第三方代码都是不一致的,这样项目就会有特别大的风险。我们肯定希望go get 第三方包到我们项目中的时候,可以设置一个稳定的版本来使用。但是go get却无法满足这个最普遍的要求。然后,glide就横空出世了。

怎么使用glide

安装glide

  1. mac系统或者Linux系统安装
  2. curl https://glide.sh/get | sh
  3. Mac也可brew安装
  4. brew install glide
  5. Ubuntu也可以apt-get安装
  6. sudo add-apt-repository ppa:masterminds/glide && sudo apt-get update
  7. sudo apt-get install glide

完整之后测试下是否安装成功

glide -h

  1. NAME:
  2. glide - Vendor Package Management for your Go projects.
  3. Each project should have a 'glide.yaml' file in the project directory. Files
  4. look something like this:
  5. package: github.com/Masterminds/glide
  6. imports:
  7. - package: github.com/Masterminds/cookoo
  8. version: 1.1.0
  9. - package: github.com/kylelemons/go-gypsy
  10. subpackages:
  11. - yaml
  12. For more details on the 'glide.yaml' files see the documentation at
  13. https://glide.sh/docs/glide.yaml
  14. USAGE:
  15. glide [global options] command [command options] [arguments...]
  16. VERSION:
  17. v0.13.2
  18. COMMANDS:
  19. create, init Initialize a new project, creating a glide.yaml file
  20. config-wizard, cw Wizard that makes optional suggestions to improve config in a glide.yaml file.
  21. get Install one or more packages into `vendor/` and add dependency to glide.yaml.

出现上面的提示信息界面就表示安装成功了。

介绍几个平时开发用的比较多的几个命令,掌握了这几个命令项目开发就基本没啥问题了。

  1. glide init --初始化项目,生成glide.yaml
  2. glide install --安装第三方包
  3. glide up --更新第三方包

举个栗子

做个UUID使用案例

首先 go get github.com/satori/go.uuid

  1. package main
  2. import (
  3. "fmt"
  4. uuid2 "github.com/satori/go.uuid"
  5. )
  6. func main() {
  7. uuid,_ := uuid2.NewV4()
  8. fmt.Println(uuid)
  9. }

运行下

  1. 10c2b95f-b7c2-45f3-b5a3-a69020b9a7f7
  2. Process finished with exit code 0

然后进入到项目目录

  1. glide init
  2. 会生成一个包含UUID包的yaml 文件
  3. package: test
  4. import:
  5. - package: github.com/satori/go.uuid

我们给这个包加下版本号

  1. package: test
  2. import:
  3. - package: github.com/satori/go.uuid
  4. - version: 1.2.0
  5. 然后执行
  6. glide install
  7. 显示里面有设置版本号的信息
  8. [INFO] --> Fetching updates for github.com/satori/go.uuid
  9. [INFO] --> Setting version for github.com/satori/go.uuid to v1.2.0.
  10. 我们看到在项目包里面生成一个 vendor的文件夹,vendor里面有个uuid 的包
  11. vendor/github.com/satori/go.uuid,以后通过glide管理的包文件就在vendor里面。
  12. 如果我们想把 version: 1.2.0 该为 version: 1.1.0.修改yaml文件的版本号,然后执行
  13. glide up
  14. [INFO] --> Fetching updates for github.com/satori/go.uuid
  15. [INFO] --> Setting version for github.com/satori/go.uuid to v1.1.0.
  16. vendor里面的版本就切换到了v1.1.0

glide 特别好用,特别实用吧。

详细的使用可以看官方的文档

https://github.com/Masterminds/glide

golang开发:环境篇(四)包管理器 glide的使用的更多相关文章

  1. golang开发:类库篇(四)配置文件解析器goconfig的使用

    为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量.例如,生产环境跟测试环 ...

  2. golang开发:环境篇(七) Go mod 使用

    Glide用的好好的,为什么要使用Modules 在 Go 1.11 中 ,官方加入package management tool,称为Go Modules.Go mod 没有出现之前,用的最多的包管 ...

  3. golang开发:环境篇(六) Go运行监控Supervisord的使用

    为什么要使用Supervisord 17年第一次写Go项目的时候,用Go开发项目倒没没费多大劲,很快就开发完成了.到了在测试环境部署的时候,由于不知道有 Supervisord 这个软件,着实花了些功 ...

  4. golang开发:环境篇(五)实时加载工具gin的使用

    gin 工具是golang开发中非常有用且有效的工具,有效的提高了开发调试go程序的效率. 为什么要使用gin 我们知道golang是编译型语言,这就表示go程序的每次改动,如果需要查看改动结果都必须 ...

  5. Golang开发环境搭建-Vim篇

    一.一个干净的环境 找个干净的基础环境,方便确认每个搭建步骤后的效果: Ubuntu 14.04 x86_64 vim version 7.4.52 go version go1.4beta1 lin ...

  6. .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器

    使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言     Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...

  7. Bower => 前端开发也有包管理器

    摘要: 一直以来npm,pip等各种包管理器好像都和前端开发没什么太大关系,当然因为nodejs的原因可能感觉npm会亲切一些,不过终归不是针对客户端的包管理工作,所以Bower的出现确实让人眼前一亮 ...

  8. 前端开发bower包管理器

    Bower 是 twitter 推出的一款包管理工具,基于nodejs的模块化思想,他可以很好的帮助你帮你解决js的依赖管理,比如jquery angular bootstrap 等等. 可以很方便的 ...

  9. VS2013中Nuget程序包管理器控制台使用入门(一)-准备环境(原创)

    准备环境: 1.打开VS2013IDE集成开发环境. 2.新建一个Asp.net Mvc的项目,比如命名为:MvcApplication1 3.打开 菜单"工具"->&quo ...

随机推荐

  1. css3的选择器有哪几种?

    *通用选择器,ID选择器 ,.类选择器class,标签选择器,标签组合选择器,伪类选择器:,+相邻元素选择器,>子元素选择器,~同辈选择器,x[title]属性选择器[type="bu ...

  2. python获取公网ip的几种方式

    python获取公网ip的几种方式 转 https://blog.csdn.net/conquerwave/article/details/77666226 from urllib2 import u ...

  3. Dart匿名方法函数和闭包

    /* 内置方法/函数: print(); 自定义方法: 自定义方法的基本格式: 返回类型 方法名称(参数1,参数2,...){ 方法体 return 返回值; } */ void printInfo( ...

  4. python中的修饰符@的作用

    1.一层修饰符 1)简单版,编译即实现 在一个函数上面添加修饰符 @另一个函数名 的作用是将这个修饰符下面的函数作为该修饰符函数的参数传入,作用可以有比如你想要在函数前面添加记录时间的代码,这样每个函 ...

  5. Python利用ctypes实现按引用传参

    C的代码 void test_cref(char *a, int *b, char *data) { , sizeof(char)); strcpy(p, "cute"); a[] ...

  6. Spring cloud微服务安全实战-5-11实现基于token的SSO(1)

    基于服务器session的SSO的方案,用户的登陆状态都是存在服务器端的 基于浏览器cookie的token实现一个sso,在原来的基础上做进一步的改造.让他不依赖session.而是完全由cooki ...

  7. k8s记录-etcd集群部署(三)

    https://blog.csdn.net/fy_long/article/details/86542872 1)程序准备tar xvf etcd-v3.3.11-linux-amd64.tar.gz ...

  8. 使用SoapUI测试wsdl

    webservice服务wsdl地址:http://localhost:8080/services/HelloWorld?wsdl new project: new soap project: 调用测 ...

  9. Python - Django - JsonResponse 对象

    用 json 模块和 HttpResponse 返回生成的 json views.py: from django.shortcuts import render, HttpResponse impor ...

  10. Redis的特性及运用

    Redis特性 一个产品的使用场景肯定是需要根据产品的特性,先列举一下Redis的特点: 读写性能优异 持久化 数据类型丰富 单线程 数据自动过期 发布订阅 分布式 这里我们通过几个场景,不同维度说下 ...