glide简介
golang包管理工具glide简介
golang包管理工具glide简介
前言
golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情。在这里我感受到了其中一些好处:
- 没有少了许多代码格式风格的争论,强制统一的风格多好;
- 编译速度超快,再也不用等待许久,才能编译完工程(测试驱动开发自然更爽);
- 也不会出现同一个项目组中的人,在使用同一个语言的不同子集。但这种情况不论是在C#还是在Java的世界里,都还是普遍存在的;
- 轻松跨平台(当然Java做得不错,C#/.net还是努力中...)
- 这是一门非常简洁、简单、清晰的编程语言(关键字好少啊)
- 包依赖处理得很有趣;
- 错误处理机制很有趣,个人觉得比C#/Java的异常处理机制更方便,也更合理些;
- 对面向对象编程很有趣,非侵入性的接口实现方式,太赞了。
- 用组合而不是继承
有些东西没有,比如模板,这个东西有一大片争论,官方也有明确的回应。是啊,为什么一定要模板呢?非要不可吗?这么关键吗?如果非要不可,是不是go并不是这个环境下的最佳选择呢。
还有一个问题的是包管理,并没有官方最佳管理方案,在go的世界里存在大量的自制解决方案。go语言的包是没有中央库统一管理的,通过使用go get命令从远程代码库(github.com,goolge code 等)拉取,直接跳过中央版本库的约束,让代码的拉取直接基于源代码版本控制库,开发者间的协同直接依赖于源代码的版本控制。直接去除了库版本的概念。没有明显的包版本标识,感觉还是有点不适应,官方的建议是把外部依赖的代码全部复制到自己可控的源代码库中,进行同意管理。从而做到对依赖包的可控管理。
1.5版本的vendor目录特性后,官方wiki推荐了多种支持这种特性的包管理工具如:Godep、gv、gvt、glide、Govendor等。我比较喜欢glide。此外,作为程序员FQ似乎是必备技能,翻得一手好墙,才能跟得上步伐,才有收起刀落的手感,怎一个爽字了得。别问我怎么FQ,找度娘,她知道。
glide
glide是Go的包管理工具。支持语义化版本,支持Git、Svn等,支持Go工具链,支持vendor目录,支持从Godep、GB、GPM、Gom倒入,支持私有的Repos和Forks。
使用glide管理的工程目录结构如下:
- $GOPATH/src/myProject (Your project)
|
|-- glide.yaml
|
|-- glide.lock
|
|-- main.go (Your main go code can live here)
|
|-- mySubpackage (You can create your own subpackages, too)
| |
| |-- foo.go
|
|-- vendor
|-- github.com
|
|-- Masterminds
|
|-- ... etc.
安装
$ curl https://glide.sh/get | sh
初始化
$ glide init
初始化,glide扫描代码目录,创建一个glide.yaml文件,文件中记录了所有的依赖
编辑配置
$ edit glide.yaml
通过修改glide.yaml文件,可以添加版本信息等,这一步不是必须的。
解析下载包依赖
$ glide update
或者
$ glide up
下载和更新glide.yaml中列出的所有依赖包,并将它们放到vendor目录下。glide同时也递归获取依赖包需要的任何依赖项包括配置文件中定义的依赖项目。glide递归获取依赖,可以识别Glide、Godep、gb、gom和GPM管理的项目。
当依赖被制定到特定的版本时,名为glide.lock的文件会被创建或者更新。例如,如果在glide.yaml中一个版本被指定在一个范围内(如:^1.2.3),那么glide将在glide.yaml中设定一个特定提交ID(commit id)。如此,将允许重复安装(见 glide install命令)。
从获取的依赖包中移除嵌套的vendor/目录可以使用-v标记。
安装特定版本
当需要从glide.lock文件中安装制定版本的包是,可以使用install命令:
glide install
该命令将会读取glide.lock文件,当glide.lock文件和glide.yaml不同步时,如glide.yaml发生改变,glide将会提供一个警告。运行glide up命令更新依赖树时,将会重建glide.lock文件。
查看glide.yaml中依赖名称
$ glide name
查看依赖列表
$ glide list
查看帮助
$ glide help
参看glide版本信息
$ glide --version
glide简介的更多相关文章
- Golang包管理工具glide简介
Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...
- Android图片缓存之初识Glide
前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...
- Android 三大图片加载框架的对比——ImageLoader,Picasso,Glide
一.ImageLaoder介绍 << Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹ass ...
- 【Android - 框架】之Glide的使用
一.Glide简介: Glide是Google官方推荐的一个图片加载和缓存的开源库,它不仅能实现平滑的图片列表滚动效果,还支持远程图片的获取.大小调整和展示,并且可以加载GIF图片.Glide相比与U ...
- 安卓高级 Android图片缓存之初识Glide
前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...
- android glide图片加载框架
项目地址: https://github.com/bumptech/glide Glide作为安卓开发常用的图片加载库,有许多实用而且强大的功能,那么,今天就来总结一番,这次把比较常见的都写出来,但并 ...
- go包管理之glide
go语言的包是没有中央库来统一管理的,通过使用go get命令从远程代码库(github.com,goolge code 等)拉取,直接跳过中央版本库的约束,让代码的拉取直接基于源代码版本控制库,开发 ...
- 使用gogs和glide来轻松拉取golang第三方库
golang的第三方代码拉取一直是让人头疼的问题,在github托管的代码还好,托管在其他网站上的代码总会由于大家都懂的原因,无法访问.纵使是github,在拉取文件数量较多的库时,也是比较慢的. 有 ...
- go包管理工具glide使用方法
golang没有官方最佳管理方案,在go的世界里存在大量的自制解决方案. go语言的包是没有中央库统一管理的,通过使用go get命令从远程代码库(github.com,goolge code 等)拉 ...
随机推荐
- kafka consumer频繁reblance
转载请注明地址http://www.cnblogs.com/dongxiao-yang/p/5417956.html 结论与下文相同,kafka不同topic的consumer如果用的groupid名 ...
- IOS开发中ARC下的assign和weak区别
在ARC中的assign和weak可以说非常相像,导致有很多人误以为他们是一摸一样的,在任何时候都可以划等价,但事实却不是这样. 在群里,有人问,id类型的delegate属性到底是用assign还是 ...
- VMware-workstation-full-12.0.1-3160714
https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.0.1-3160714.exe 5A02H-AU2 ...
- 银行B2C直连
银行B2C直连: 1. 银联B2C直连流程: 注: 所有银行B2C接入方式均为此流程. 不同银行只是签名及验签方式不一致,请求及返回参数不一样,其他的一致. 2. 银行B2C支付请求: 交易流程: ( ...
- BZOJ 1878 SDOI 2009 HH项链 树状数组 + 脱机处理
标题效果:一些珠子项链.珠具有不同的颜色.我们问了很多次有多少种不同的颜色有过一段范围. 思考:这个问题让我学会聪明的离线实践.按左端点排序问题.加工出来的位置每种颜色首次出现.每一种颜色的下一次出现 ...
- 再回首,Java温故知新(十一):Java反射
最近继续回顾Java基础,进行到了Java反射这一部分,个人感觉这部分应该算是Java的高级特性了,在日常开发中使用的并不多,应用人员主要是工具构建人员,所以这次学习中以了解为主,Java反射主要应用 ...
- A different twist on pre-compiling JSPs--reference
I’ve blogged about this topic earlier and expressed my frustrations as to how web containers don’t p ...
- [转] linux下查看文件编码及修改编码
如果无法识别文件编码,可能是文件中已有乱码,此时需要去掉乱码 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即 ...
- Json字符串与字典互转
#pragma mark 转换json字符串 +(NSString *)toJSON:(id)aParam { NSData *jsonData=[NSJSONSerialization data ...
- Matlab使用xlsread, xlswrite函数导致excel进程无法终止的问题
系统版本:Win7 64位 Matlab版本:R2015b 问题描述:使用excel的操作函数,比如xlsread,xlswrite,导致excel进程无法终止,任务管理器中仍残留excel进程,打开 ...