介绍:
godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息,并在go命令前加壳来做到依赖管理。
1.安装:
go get github.com/tools/godep
2.编译和运行
项目用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变量中。
3.包管理使用 godep
1)、拉取依赖 restore 用于开发
godep restore
建议开发过程使用这个命令来同步依赖库
如果下载的项目中只有Godeps.json文件,而没有包含第三库则可以使用godep restore这个命令将所有的依赖库下来到$GOPATH\src中。
用于开发godep restore执行时,godep会按照Godeps/Godeps.json内列表,依次执行go get -d -v来下载对应依赖包到GOPATH路径下。
2)、检出依赖 save
godep save
godep save将项目中使用到的第三方库复制到项目的Godeps目录下。
godep save 会自动扫描当前目录所属包中import的所有外部依赖库(非系统库),并查看其是否属于某个代码管理工具(比如git,hg)。
若是,则把此库获取路径和当前对应的revision(commit id)记录到当前目录Godeps下的Godeps.json,
同时,把不含代码管理信息(如.git目录)的代码拷贝到Godeps/_workspace/src下,用于后继godep go build等命令执行时固定查找依赖包的路径。
3)、godep 编译运行 build
项目用godep管理后,要编译和运行项目的时候再用go run和go build显然就不行,
godep go build XXX
godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOPATH变量中。
4)、Godeps目录的作用
godep save时godep把所有依赖包代码从GOPATH路径拷贝到Godeps目录下,并去除代码管理目录。这个用处主要是为了支撑godep go tool的一系列操作,
尤其是git clone了代码库下来后,通常直接用godep go install xxx即可完成编译,一定程度上能够缓解golang比较严格的代码路径和包管理带来的烦恼。
而在使用IDE时,可以通过把vendor添加到GOPATH实现代码跳转和编译等功能,比较方便。
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. 腾讯云上免费部署HTTPS
  2. "转" CXF+JAXB处理复杂数据
  3. 一个简单的JAVA C/S多线程应用
  4. 安装linux操作系统
  5. UEFI安装Kali Linux 1.1.0记录
  6. elasticsearch配置
  7. HTML 内嵌JS脚本、相关参考手册
  8. SVN版本日志对话框命令使用指南
  9. 向EXECL文件中导入数据的同时插入图片
  10. 使用Dreamweaver正则表达式替换href中的内容
  11. android Material Design详解
  12. SMB溢出漏洞所需的SMB协议内容
  13. DRF02
  14. P1414 又是毕业季II
  15. 《精通Python设计模式》学习行为型之责任链模式
  16. 转:springboot(二):web综合开发
  17. 论Sava(),SaveOrUpdate(),Merge()区别
  18. mysql小特性:change buffer
  19. Linux防火墙命令
  20. java.lang.NumberFormatException: For input string: "26.0"

热门文章

  1. phaser学习总结之Tween详解
  2. shell检测网站地址是否存活
  3. MongoDB 学习笔记之 分片和副本集混合运用
  4. Mysql数据类型TINYINT(1)与BOOLEAN踩坑记
  5. 新手学分布式-动态修改Nginx配置的一些想法
  6. e课表项目第二次冲刺周期第一天
  7. Python3 pygal 与 pygal_maps_world 绘制世界地图
  8. 章节十七章、2- 给执行失败的case截图
  9. windows离线安装sublime插件:ctags
  10. CTF-SMB渗透