2018年8月25日更新:Go官方已将第三方库管理工具定义为模块(modules),这篇文章已过期,请大家阅读新文章《Go模块简明教程》了解一下。
前言
vgo是Go语言推出的第三方库管理工具,即将在Go语言新版本中使用。
相信大家都接触过其它语言的第三方库管理工具,比如Java的maven,PHP的composer,Python的pip,Node的npm等。vgo类似于这样的功能,方便Go语言项目管理第三方库。
Go语言官方以前一直没有明确正式的包管理工具,因此导致包管理工具非常混乱,比如dep,glide,govendor,godep等。(虽然dep也是Go语言官方推出的,但是它最终会被放弃。)
vgo的推出,是Go语言社区的需要,将解决包管理工具混乱的问题。Go语言官方将使用这个依赖工具为主,所以我们有必要提前了解一下它的使用。
(vgo即英文versioned go的缩写)
Go官方说会在Go1.11中使用vgo,这个说明是在go wiki的《vgo user guide》一节中讲到的。
Go1.11会在2018年8月推出,这个说明是在《Go 1.11 Release Notes》中讲到的,此处链接需要跳墙。
vendor目录
vendor目录是Go1.5版本后添加的依赖包管理目录。
依赖包目录搜索顺序:vendor目录 -> GOROOT -> GOPATH
安装
说明:Go新版本中会直接使用vgo,但目前Go新版本还没有推出,为了提前了解和使用,需要另外安装。
源码安装
无墙或可跳墙的方案(快速)
go get -u golang.org/x/vgovgo
无法跳墙的方案
git clone github.com/golang/vgogo build main.go
此方法也是一些国内被墙掉的Go包常用的技巧方法,顺便提一下。
如何使用?
1、项目目录下的go.mod文件
go.mod文件像Java maven的pom.xml文件,PHP的composer.json文件,就是依赖的配置文件,放在项目的根目录下。
切记,go.mod文件至少要有 module 字段!!!package main // import "xxx"
go.mod文件常用字段:
module 指示这个项目的包路径(别人怎么引用你的包名称)
require 必须依赖
exclude 排除依赖
replace 替换依赖
2、常用命令
vgo versionvgo installvgo buildvgo runvgo get github.com/gin-gonic/ginvgo get github.com/gin-gonic/gin@v1.2vgo mod -vendor
vgo help
获取的依赖包数据会缓存到GOPATH路径下的src/mod目录里。
举例说明
vgo build