一、概述

golang的包管理工具有很多,本篇幅主要介绍glide进行包管理。

二、安装及命令介绍

go get github.com/Masterminds/glide

glide create|init 初始化项目并创建glide.yaml文件.

glide get 获取单个包

  --all-dependencies 会下载所有关联的依赖包

  -s 删除所有版本控制,如.git

  -v 删除嵌套的vendor

glide install 安装包

glide update|up 更新包

三、案例测试

准备:本次测试的包是 github.com/mattn/go-adodb ,这个包其中有一个依赖包是 github.com/go-ole/go-ole

3.1 下载单个包

command:
glide get github.com/mattn/go-adodb glide.lock:
hash: 60061bf3133f0eec2f147f3d80f3e37c402ee12df8cde841b03d80c82a96bab7
updated: 2016-05-18T23:30:08.5219207+08:00
imports:
- name: github.com/mattn/go-adodb
version: 452cccbbcfb7906b3cbc512992557c1083e1011b
devImports: [] glide.yaml:
package: glide_demo6
import:
- package: github.com/mattn/go-adodb

  

3.2 下载单个包, --all-dependencies

command:
glide get --all-dependencies -s -v github.com/mattn/go-adodb glide.lock:
hash: 60061bf3133f0eec2f147f3d80f3e37c402ee12df8cde841b03d80c82a96bab7
updated: 2016-05-18T23:34:48.7545322+08:00
imports:
- name: github.com/go-ole/go-ole
version: 572eabb84c424e76a0d39d31510dd7dfd62f70b2
subpackages:
- oleutil
- name: github.com/gonuts/commander
version: f8ba4e959ca914268227c3ebbd7f6bf0bb35541a
- name: github.com/gonuts/flag
version: 741a6cbd37a30dedc93f817e7de6aaf0ca38a493
- name: github.com/mattn/go-adodb
version: 452cccbbcfb7906b3cbc512992557c1083e1011b
devImports: [] glide.yaml:
package: glide_demo6
import:
- package: github.com/mattn/go-adodb

从lock中可以看到,确实将所有的依赖包都下载了。

3.3 下载制定版本号的包

command:
glide get github.com/go-sql-driver/mysql#v1.2 glide.yaml:
package: glide_demo
import:
- package: github.com/go-sql-driver/mysql
version: v1.2

  

3.4 团队开发

在团队开始时,需要将 glide.yaml 和 glide.lock 进行版本控制,vendor 忽略掉。

模拟下团队开发的流程

A同学:初始化项目,并提交了源码,其中glide.yaml 和 glide.lock的内容如下

glide.yaml:
package: glide_demo6
import:
- package: github.com/mattn/go-adodb
- package: github.com/go-ole/go-ole
glide.lock:
hash: 18e3b9c2f5c11f3268b22ebdbea09636c5cae28e78f0011578f455c485e9d214
updated: 2016-05-18T23:43:15.8217224+08:00
imports:
- name: github.com/go-ole/go-ole
version: 572eabb84c424e76a0d39d31510dd7dfd62f70b2
- name: github.com/mattn/go-adodb
version: 452cccbbcfb7906b3cbc512992557c1083e1011b
devImports: []

B同学:拉去项目,执行 glide install,会自动下载对应的包

四、总结

使用glide的好处是,每个项目都采用各自独立的包,而且可以很好的控制包的版本,这在团队开发中尤其重要。

[golang] Glide 包管理的更多相关文章

  1. [golang] Glide 包管理工具,在windows10 64位系统上的bug修复方案

    bug重现 [ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1. ...

  2. Golang学习--包管理工具glide

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  3. Golang Vendor 包管理工具 glide 使用教程

    Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包.类似 Java 的 Maven,PHP 的 Composer. Github:https:// ...

  4. golang的包管理---vendor/dep等

    首先关于vendor 1 提出问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...

  5. glide包管理工具

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  6. 拜拜了,GOPATH君!新版本Golang的包管理入门教程

    Go 1.11和1.12实现了对包管理的初步支持,Go的新依赖管理系统使依赖版本信息明确且易于管理.Using Go Modules - The Go Blog 新的包管理模式有什么不同? 作为Go语 ...

  7. nexus 3.17.0 做为golang 的包管理工具

    nexus 3.17.0 新版本对于go 包管理的支持是基于go mod 的,同时我们也需要一个athens server 然后在nexus 中配置proxy 类型的repo 参考配置 来自官方的配置 ...

  8. golang 的glide包管理使用技巧教程

    安装glide ➜ wemall git:(master) ✗ go get github.com/Masterminds/glide ➜ wemall git:(master) ✗ go insta ...

  9. Glide Golang包管理

    Golang的包管理乱得不行,各种工具横空出世,各显神通啊.用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单. 初 ...

随机推荐

  1. POSTGRESQL 创建表结构、修改字段、导入导出数据库(支持CSV)

    这两个月经常使用postgresql,总结一些经常使用的语句: --创建表 CREATE TABLE customers ( customerid SERIAL primary key , compa ...

  2. java.net.ConnectException: Connection refused: no further information

    NIO项目中出现了这个错误: java.net.ConnectException: Connection refused: no further information 一般是因为InetSocket ...

  3. 简单的tcp聊天

    package com.pers.tcptest; import java.io.IOException; import java.io.InputStream; import java.io.Out ...

  4. java线程同步实的现方式

    为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他 ...

  5. 转:CentOS系统yum源配置修改、yum安装软件包源码包出错解决办法!

    yum安装包时报错: Could not retrieve mirrorlist http://mirrorlist.repoforge.org/el6/mirrors-rpmforge error ...

  6. python之模块cmath

    # -*- coding: utf-8 -*-#python 27#xiaodeng#python之模块cmath #复数的数学函数,如log.tan.sin等函数用法,针对我目前的情况用途较少,暂不 ...

  7. TL 重构

    import dependencies.*;import org.apache.commons.lang3.ArrayUtils;import org.apache.commons.lang3.Str ...

  8. Qt5中创建临时的后台线程。

    有个需求就是,GUI图形界面在上传文件到服务器的时候,需要用zip命令行打包,因为文件很多的时候,zip命令打包需要计算很长时间,所以把这样计算量大的任务分离到后台线程比较合适,然后任务完成,以信号槽 ...

  9. ios中图层的用法(1)

    uiview画圆角 - (void)layerMyView { // 圆角 self.myview.layer.cornerRadius = ; // 边框 self.myview.layer.bor ...

  10. spring 自动装配 default-autowire="byName/byType"

    <PRE class=html name="code">spring 自动装配 default-autowire="byName/byType"   ...