介绍:
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
   
   
   

golang 包依赖管理 godep 使用的更多相关文章

  1. Golang Gin 项目包依赖管理 godep 使用

    Golang Gin 项目包依赖管理 godep 使用 标签(空格分隔): Go 在按照github.com/tools/godep文档go get完包以后,调整项目结构为$GOPATH/src/$P ...

  2. Golang 包依赖管理工具

    1.godep:https://studygolang.com/articles/9877 2.dep:https://studygolang.com/articles/10589 3.glide:h ...

  3. golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的

    golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的 1:执行脚本setGoPath.sh#!/bin/bashif [[ $GOPATH =~ .*$ ...

  4. Go 包依赖管理工具 —— govendor

    govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...

  5. Node.js 第三方包的安装、升级、卸载,以及包依赖管理

    本地安装: npm install package-name 全局全装: npm install -g  package-name 举个栗子 全局安装 React项目的脚手架 npm install ...

  6. Python生成requirements.txt包依赖管理文件

    requirements.txt是Python的依赖管理软件,和Java的POM一样. requirements.txt会生成使用了pip安装后的依赖包,在正常环境下会生成这个目录下的包/usr/lo ...

  7. 使用CocoaPods来做iOS程序的包依赖管理

    前言 每种语言发展到一个阶段,就会出现相应的依赖管理工具, 或者是中央代码仓库.比如 Java: maven,Ivy Ruby: gems Python: pip, easy_install Node ...

  8. PHP的包依赖管理工具Composer简介

    composer是一个基于项目的依赖管理器,负责将php项目的所依赖的包和库安装在项目的目录中,默认不会不会安装任何数据到全局.他用于取代之前pear工具 1 安装Composer curl -sS  ...

  9. Golang modules包依赖管理工具

    初始化 执行go mod  init module-name,其中module-name为包名字,执行完后会生成go.mod文件,如下 module module-name go 1.13 包管理 使 ...

随机推荐

  1. 三个Eclipse下的Debug的使用场景(五)

    本文链接:https://blog.csdn.net/u011781521/article/details/55000066    http://blog.csdn.net/u010075335/ar ...

  2. (7)Cmake的使用简介

        CMake是一个跨平台的安装(编译)工具,是一个比Make更高级的的编译配置工具,可以根据不同平台.不同编译器,通过编写CmakeLists,可以控制生成的Makefile,从而控制编译过程. ...

  3. IntelliJ IDEA下载安装及破解(100%成功)教程

    原文链接:http://www.studyshare.cn/software/details/1182/0 一.下载 1.IntelliJ IDEA下载 网盘下载:https://pan.baidu. ...

  4. JVM类加载过程与双亲委派模型

    类加载过程 类加载过程为JVM将类描述数据从.class文件中加载到内存,并对数据进行解析和初始化,最终形成被JVM直接使用的Java类型.包含: 加载:获取该类的二进制字节流,将字节流代表的静态存储 ...

  5. Redis实现分布式文件夹锁

    缘起 最近做一个项目,类似某度云盘,另外附加定制功能,本人负责云盘相关功能实现,这个项目跟云盘不同的是,以项目为分配权限的单位,同一个项目及子目录所有有权限的用户可以同时操作所有文件,这样就很容易出现 ...

  6. cocos2d-x 3.2,Label,Action,Listener,Menu Item等简单用法

    转载自:http://blog.csdn.net/pleasecallmewhy/article/details/34931021 创建菜单(Menu Item) // 创建菜单 auto menuI ...

  7. CS231n:Python Numpy教程

    Python 基本数据类型 容器 列表 字典 集合 元组 函数 类 Numpy 数组 访问数组 数据类型 数组计算 广播 SciPy 图像操作 MATLAB文件 点之间的距离 Matplotlib 绘 ...

  8. Spring Cloud Gateway的动态路由怎样做?集成Nacos实现很简单

    一.说明 网关的核心概念就是路由配置和路由规则,而作为所有请求流量的入口,在实际生产环境中为了保证高可靠和高可用,是尽量要避免重启的,所以实现动态路由是非常有必要的:本文主要介绍 Spring Clo ...

  9. Git上传到gitlab现有分支

    [场景]gitlab上已经创建了分支,将本地的文件上传到该分支下 gitlab上的现有分支branch_new 在需要上传的文件夹下打开git命令窗口 # 克隆远端分支到本地 git clone -b ...

  10. 使用CDPATH快速cd到指定路径

    CDPATH是shell的一个环境变量, 默认值为空: 将你常用的目录添加到CDPATH的目录列表中, 用':'冒号分隔, 比如, 当前目录 ., home目录 ~, 根目录 /, 等等: # 注意等 ...