“ 阅读本文大概需要3.4分钟 ”
早期的Golang被很多开发者所诟病的一个问题就是依赖包的管理。Golang 1.5 release版本的发布之前,只能通过设置多个GOPATH的方式来解决这个问题,例如:我两个工程都依赖了Beego,但A工程依赖的是<code style="font-size: 14px;"><span style="color: rgb(217, 72, 99);">Beego1.1</span>
Beego1.1,B工程依赖的是<span style="color: rgb(217, 72, 99);">Beego1.7</span>
Beego1.7,我必须设置两个GOPATH来区分,并且在切换工程的时候GOPATH也得切换,无比痛苦。终于终于在Golang 1.5 release 开始支持除了GOROOT和GOPATH之外的依赖查询,那就是
<span style="color: rgb(217, 72, 99);">vender</span>
<span style="color: rgb(61, 69, 76);">vender</span>
,<span style="color: rgb(217, 72, 99);">dep</span>
于是很多大佬开始造轮子,造得比较好的应该是dep
<span style="color: rgb(217, 72, 99);">glide</span>
和
。主角出场dep
今天的主角是
,Golang的官方依赖工具,用来管理和下载工程依赖的工具,以下是官方的介绍
安装<span style="color: rgb(217, 72, 99);">brew install dep</span>
<p>brew install dep<span style="color: rgb(61, 69, 76);"></span></p>
<span style="color: rgb(217, 72, 99);">curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh</span>
<span style="color: rgb(61, 69, 76);">curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh</span>
go get -u github.com/golang/dep/cmd/dep
$GOPATH/bin
<span style="color: rgb(217, 72, 99);">$PATH</span>
Windows得自己编译,并且确认把
$PATH
下 在命令行输入dep
并回车,会出现以下提示的话,说明已经安装成功了。<span style="color: rgb(217, 72, 99);">dep</span>
<br>
1.dep init
<br> 备份当前的<code style="font-size: 14px;"><span style="color: rgb(199, 37, 78);">vender</span>
vender,创建<span style="color: rgb(61, 69, 76);">vender</span>
<span style="color: rgb(61, 69, 76);">vender</span>
目录并下载项目中的所有依赖包,生成<span style="color: rgb(199, 37, 78);">Gopkg.lock</span>
<span style="color: rgb(61, 69, 76);">Gopkg.lock</span>
<span style="color: rgb(199, 37, 78);">Gopkg.toml</span>
和Gopkg.toml
<span style="color: rgb(199, 37, 78);">Gopkg.toml</span>
以下是两个文件的作用说明,简单讲<span style="color: rgb(199, 37, 78);">Gopkg.toml<strong></strong></span>
Gopkg.lock
是清单文件,
<br>是校验描述文件。尽量不要修改,避免造成两个文件不同步的错误。
A manifest - a file describing the current project’s dependency requirements. In dep, this is the Gopkg.toml file.A lock - a file containing a transitively-complete, reproducible description of the dependency graph. In dep, this is the Gopkg.lock file.
<br>
2.dep status
用来查看项目依赖的详细信息和状态,非常清晰。
3.dep ensure
<br>
尝试确保所有的依赖库都已经安装,如果没有即下载,相当于对依赖库做增量更新。<br>
<span style="color: rgb(81, 81, 81);"></span>
4.dep ensure add github.com/RoaringBitmap/roaring@^1.0.1
下载添加新的依赖库,并增量更新清单文件和校验描述文件。github.com/RoaringBitmap/roaring
是依赖库的包名,1.0.1
是库的版本号。
<span style="color: rgb(61, 69, 76);font-size: 16px;"> 当然<code style="font-size: 14px;"><span style="color: rgb(61, 69, 76);font-size: 16px;"> 当然</span>
<span style="font-size: 16px;color: rgb(199, 37, 78);"><code style="font-size: 14px;"><span style="font-size: 16px;color: rgb(199, 37, 78);"><strong>dep</strong></span>
dep<span style="color: rgb(61, 69, 76);font-size: 16px;">不会每次都去下载,其工作原理和Mevan一样,会优先在本地仓库搜索,本地仓库未找到即在网络上下载,并添加到本地仓库。</span>
<span style="color: rgb(61, 69, 76);font-size: 16px;">不会每次都去下载,其工作原理和Mevan一样,会优先在本地仓库搜索,本地仓库未找到即在网络上下载,并添加到本地仓库。<p style="margin: 1.5em 5px !important;"></p></span>
$GOPATH/pkg/dep/sources
以上是有,总比没有要好:Go依赖管理工具dep的详细内容。更多信息请关注PHP中文网其他相关文章!