9.5 Go 依赖管理
9.5 Go 依赖管理
godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息。
A. 所有的第三方包都放在$GOPATH的src目录下。 B. 如果不同程序依赖的版本不一样,怎么管理 C. 每个程序依赖的包,没有版本号的概念。
godep安装
a. 安装方法: go get github.com/tools/godep
b. 输入godep 命令,出现帮助信息 成功安装后,在$GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这个,建议这个目录加入到全局环境变量中。
1.2. godep用法
1.寻找一个使用第三方包的项目,go标准包不需要管理,默认向下兼容
如路径 ./src/gostudy/gobook/protobuf
进入protobuf项目 执行命令
godep save 会生成Godeps和vendor文件夹,包含了项目第三方包的版本信息,以及项目依赖的第三方包都放入了vender包了
如Godeps文件夹,内有Godeps.json文件
{
"ImportPath": "gostudy/gobook/protobuf",
"GoVersion": "go1.10",
"GodepVersion": "v80",
"Deps": [
{
"ImportPath": "github.com/golang/protobuf/proto",
"Comment": "v1.3.0-2-gb5d812f",
"Rev": "b5d812f8a3706043e23a9cd5babf2e5423744d30"//如需要升级,只需要更改这里最新的COMMIT id
}
]
}
目录结构图
godep工作流程
自动扫描当前目录所属包中import的所有外部依赖库(非系统库) 将所有的依赖库下来下来到当前工程中,产生文件 Godeps\Godeps.json 文件 在没有 Godeps\ 文件的情况下,生成模组依赖目录vendor\文件夹 godep save能否成功执行需要有两个要素: 当前或者需扫描的包均能够编译成功:因此所有依赖包事先都应该已经或go get或手工操作保存当前GOPATH路径下 依赖包必须使用了某个代码管理工具(如git,hg):这是因为godep需要记录revision
1.2.1. 拉取依赖 restore 用于开发
godep restore
建议开发过程使用这个命令来同步依赖库
如果下载的项目中只有 Godeps.json
文件,而没有包含第三库则可以使用godep restore
这个命令将所有的依赖库下来到$GOPATH\src
中用于开发
godep restore
执行时,godep
会按照Godeps/Godeps.json
内列表,依次执行go get -d -v
来下载对应依赖包到GOPATH
路径下
1.2.2. 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
9.5 Go 依赖管理的更多相关文章
- 在Eclipse中使用建立使用Gradle做依赖管理的Spring Boot工程
前述: Gradle存在很长时间了,以前只知道Maven和ivy ,最近才知道有这个存在,因为以后要用这个了; 所以,要先学会怎么用这个工具,就从建立一个简单工程开始! 实际上以前是见过Gradle的 ...
- Gradle Maven 依赖管理
仓库管理简介 本质上说,仓库是一种存放依赖的容器,每一个项目都具备一个或多个仓库. Gradle支持以下仓库格式: Ivy仓库 Maven仓库 Flat directory仓库 我们来看一下,对于每一 ...
- webpack模块依赖管理介绍
http://webpack.github.io/docs/ webpack is a module bundler. 是一个模块管理器 webpack可以管理模块的依赖关系,并产生可以替代这些模块的 ...
- Liferay7 BPM门户开发之43: Gradle依赖管理
进入liferay v7.0,官方推荐使用Gradle进行依赖管理和发布,所以必须知道Gradle的用法,网上资料很多,不赘述 只写依赖管理的分类 一般用外部仓库依赖,也可以用本地文件依赖(依赖本地j ...
- Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突)
开发任何软件,如何管理依赖是一道绕不过去的坎,软件开发过程中,我们往往会使用这样那样的第三方库,这个时候,一个好的依赖管理就显得尤为重要了.作为一个自动构建工作,Gradle对依赖管理有着很好 ...
- 用CocoaPods做iOS程序的依赖管理(转摘)
转摘自:http://blog.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/ 文档更新说明 2012-1 ...
- mvc-6依赖管理
CommonJS CommonJS规范,主要解决命名空间管理模块和用一套标准的编程模式来加载模块: 很快成为了JavaScript模块写法的事实标准: 它包含IO接口,底层的套接字流,以及单元测试等标 ...
- Composer : php依赖管理工具
原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...
- crossplatform---bower解决js的依赖管理
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
- Gradle学习系列之七——依赖管理
在本系列的上篇文章中,我们讲到了如何使用java Plugin,在本篇文章中,我们将讲到Gradle的依赖管理. 请通过以下方式下载本系列文章的Github示例代码: git clone https: ...
随机推荐
- failed to open stream :HTTP request failed 解决方法
用curl抓取,不要用file_get_contents(); 前者比后者效率高一点
- QT 获取可执行程序的路径
获取到生成.exe目录 QCoreApplication::applicationDirPath(); 获取当前工程目录 QDir::currentPath()
- 《JavaScript 模式》读书笔记(6)— 代码复用模式3
我们之前聊了聊基本的继承的概念,也聊了很多在JavaScript中模拟类的方法.这篇文章,我们主要来学习一下现代继承的一些方法. 九.原型继承 下面我们开始讨论一种称之为原型继承(prototype ...
- 怎么在java 8的map中使用stream
怎么在java 8的map中使用stream 简介 Map是java中非常常用的一个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引入了Stream的概念,那么我们怎么在Map中使用S ...
- 09-5.部署 EFK 插件
09-5.部署 EFK 插件 EFK 对应的目录:kubernetes/cluster/addons/fluentd-elasticsearch $ cd /opt/k8s/kubernetes/cl ...
- stl的stack在开发中的应用
栈有后进先出特点,我们可以用它来暂时保存数据,在画板开发中,我用到了栈来保存用户的每一步操作,当用户点击撤销时可以把图像从栈里面取出,然后恢复.浏览器的前进和后退也是这个原理,只是它保存的是网页罢了. ...
- Linux从入门到精通系列之NFS
网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主 ...
- 实战-MySQL定时增量备份(2)
概要 引言 增量备份 恢复增量备份 定时备份 引言 在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就 gg 了.所以要对我们的线上数 ...
- Mac查看与修改系统默认shell
Mac查看与修改系统默认shell 查看所有shell cat /etc/shells 输出: # List of acceptable shells for chpass(1). # Ftpd wi ...
- Codeforce-CodeCraft-20 (Div. 2)-A. Grade Allocation
n students are taking an exam. The highest possible score at this exam is m. Let ai be the score of ...