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文件 下载并安装包和依赖项 编译并安 ...
随机推荐
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q77-Q80)
Question 77You have a SharePoint list named Announcements.You have an event receiver that contains t ...
- CentOS6.5上编译OpenJDK7源码
本文地址:http://www.cnblogs.com/wuyudong/p/build-openjdk7.html,转载请注明源地址. 采用开源的OpenJDK版本,获取其源码的方式有两种: 通Me ...
- 关于 xib 的使用
前两天写百度地图的时候要添加 一个标注的泡泡view 但有些复杂所以想用xib 拖拽出一个View ,拖拽出来之后发现添加不到Controller中 ,郁闷!! 终于找到了方法: //先获取NIb ...
- iOS中发送HTTP请求的方案
在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLConnection更加强大, ...
- iOS Xcode7上真机调试
在Xcode7上进行真机调试,不需要证书,步骤如下: 1. 2. 3. 4. 5.添加Apple ID后会显示两个Free,表示可以免费真机调试iOS应用和Mac应用,选中高亮选项,点击view de ...
- linux命令之 用户和群组
一.保存用户信息的文件 1 /etc/passwd root:x:::root:/root:/bin/bash pwftp:x::::/alidata/www/wwwroot/:/sbin/nolog ...
- 分享git的常用命令
Git操作笔记 1.创建目录 $ mkdir learngit $ cd learngit 2.把新建的目录变成仓库 $ git ...
- 基于git的工作流程
本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...
- Java Concurrency In Practice -Chapter 2 Thread Safety
Writing thread-safe code is managing access to state and in particular to shared, mutable state. Obj ...
- MongoDB学习笔记——MongoDB 连接配置
MongoDB连接标准格式: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[dat ...