Go 命令之 godep
本文参考:http://www.cnblogs.com/me115/p/5528463.html#h20
http://studygolang.com/articles/4385
关于Godep
发现好多golang项目都使用到godep作为包管理的工具,像比较大型的项目,比如kubernetes这种,都是使用的是godep来进行依赖管理操作的了,看了一下有点像maven的感觉
安装:
go get github.com/tools/godep
编译和运行
项目用godep管理后,要编译和运行项目的时候再用go run和go build显然就不行了,因为go命令是直接到GOPATH目录下去找第三方库。 而使用godep下载的依赖库放到Godeps/workspace目录下的;
godep go run main.go
godep go build
godep go install
godep go test
godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOPATH变量中;
godep save
godep save将项目中使用到的第三方库复制到项目的Godeps目录下。
godep save 会自动扫描当前目录所属包中import的所有外部依赖库(非系统库),并查看其是否属于某个代码管理工具(比如git,hg)。若是,则把此库获取路径和当前对应的revision(commit id)记录到当前目录Godeps下的Godeps.json,同时,把不含代码管理信息(如.git目录)的代码拷贝到Godeps/_workspace/src下,用于后继godep go build等命令执行时固定查找依赖包的路径。
因此,godep save能否成功执行需要有两个要素: 当前或者需扫描的包均能够编译成功:因此所有依赖包事先都应该已经或go get或手工操作保存到当前GOPATH路径下 依赖包必须使用了某个代码管理工具(如git,hg):这是因为godep需要记录revision
godep restore
如果下载的项目中只有Godeps.json文件,而没有包含第三库则可以使用godep restore这个命令将所有的依赖库下来下来到GOPATH的src中。
godep restore
godep restore执行时,godep会按照Godeps/Godeps.json内列表,依次执行go get -d -v 来下载对应依赖包到GOPATH路径下,因此,如果某个原先的依赖包保存路径(GOPATH下的相对路径)与下载url路径不一致,比如kuberbetes在github上路径是github.com/kubernetes,而代码内import则是k8s.io,则会导致无法下载成功,也就是说godep restore不成功。这种只能手动,比如手动创建$GOPATH/k8s.io目录,然后git clone。
golang自带包管理工具
自带工具:go get go get可以将依赖的第三方库下载本GOPATH目录,在代码中直接import相应的代码库就可以了。 与godep相比,如果项目引用的第三方库没有列入到项目里面,安装项目时,针对第三方库需要使用go get一个个下载,比较麻烦;
注:使用godep restore可能导致部分库无法下载下来;编译会报错: cmd/decode.go:16:2: cannot find package "github.com/CodisLabs/redis-port/pkg/libs/atomic2" in any of:
此时针对报错的特定库再go get一般都能下载: go get github.com/CodisLabs/redis-port/pkg/libs/atomic2
godep支持的命令
save list and copy dependencies into Godeps
go run the go tool with saved dependencies
get download and install packages with specified dependencies
path print GOPATH for dependency code
restore check out listed dependency versions in GOPATH
update update selected packages or the go version
diff shows the diff between current and previously saved set of dependencies
version show version info
笔记
1.执行godep save,此时会生成Godeps文件夹,同时将引用的放入vendor文件夹中。

Go 命令之 godep的更多相关文章
- go语言godep使用命令
godep 看见他的star比govendor,所以我使用它.官方地址 https://github.com/tools/godep install 1 go get github.com/too ...
- codis 新版本 CodisLabs 编译安装
codis 3.0 版本编译安装 # 首先安装 go 语言 wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz ...
- Go依赖管理及Go module使用
Go语言的依赖管理随着版本的更迭正逐渐完善起来. 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面.这就导致了同一个库只能保存一个版本的代码.如果不同 ...
- Go语言之依赖管理
Go语言之依赖管理 Go语言的依赖管理随着版本的更迭正逐渐完善起来. 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面.这就导致了同一个库只能保存一个 ...
- GO学习-(22) Go语言之依赖管理
Go语言之依赖管理 Go语言的依赖管理随着版本的更迭正逐渐完善起来. 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面.这就导致了同一个库只能保存一个 ...
- Go语言系列之依赖管理
依赖管理 为什么需要依赖管理? 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面.这就导致了同一个库只能保存一个版本的代码.如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解 ...
- godep 包管理工具
godep是解决包依赖的管理工具 安装 go get github.com/tools/godep 成功安装后,在GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这 ...
- 【GoLang】golang 报管理工具 Godep 介绍
使用方法: 提交:cd ${GOPATH}/src/github.com/junneyang/xcloudgodep save -v ./...rm -rf vendor/git checkout - ...
- Go命令官方指南【原译】
启动错误报告 编译包和依赖项 删除目标文件和缓存的文件 显示包或符号的文档 打印Go环境信息 更新包以使用新API Gofmt(重新格式化)包源 通过处理源生成Go文件 下载并安装包和依赖项 编译并安 ...
随机推荐
- JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
package com.pb.demo.packclass.demo1; import java.util.HashSet; /** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 ...
- 【原】自定义UIPageControl的圆点
在下面的两种情况下会导致圆点贴图刷新: 1.用户调用setCurrentPage:(NSInteger)currentPage时 所以重载这个函数便可拦截 2.点击圆点矩形区域时 这说明,我们 ...
- iOS开发笔记13:顶部标签式导航栏及下拉分类菜单
当内容及分类较多时,往往采用顶部标签式导航栏,例如网易新闻客户端的顶部分类导航,最近刚好有这样的应用场景,参考网络上一些demo,实现了这种导航效果,记录一些要点. 效果图(由于视频转GIF掉帧,滑动 ...
- 斯坦福iOS7公开课7-9笔记及演示Demo
这一部分主要介绍了iOS的绘图.手势.协议.block.力学特效动画(包括重力.碰撞.吸附等)以及自动布局的内容. 1.绘图.手势 (1)调用一个自定义的UIView时,可以使用awakeFromNi ...
- 静态代码检查工具-PMD初学者入门篇
前言: PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码. PMD更多地是集中在预先检测缺陷上,它提供了高度可配置的丰富规则集,用户可以方便配置对待特定项目使用那些规则 ...
- IOS沙盒Files目录说明和常用操作
Ios沙盒目录清单 1 Documents 用于存储用户生成的文件.其他数据及其他程序不能重新创建的文件,默认文件通过iCloud自动备份.如果不需要iCloud备份,则设置标记 NSURLIsExc ...
- BIEE从底层表结构向上更新
影响BIEE查询结果的几个因素: 1.数据库表结构变化后,RPD如何处理? 更新物理层 增加.删除.修改表名. 添加字段:右键点击连接池,点击导入元数据.勾掉关键字,重新导入那张表. 删除字段:直接右 ...
- 问题解决——OpenGL超级宝典 关于gltDrawTorus的错误解决
看OpenGL超级宝典的时候,遇到一个函数 “gltDrawTorus”,在TRANSFORM和SPHEREWORLD中都有用到.但是一开始在自己写示例代码里时却没法使用,而在作者的代码目录结构下却可 ...
- Windows x86/ x64 Ring3层注入Dll总结
欢迎转载,转载请注明出处:http://www.cnblogs.com/uAreKongqi/p/6012353.html 0x00.前言 提到Dll的注入,立马能够想到的方法就有很多,比如利用远程线 ...
- JS键盘事件监听
window.onload=function(){ var keyword = document.getElementById("keyword"); keyword.onkeyu ...