Go游戏服务器开发的一些思考(二十二):Godep包管理介绍

来源:互联网 发布:批发衣服软件 编辑:程序博客网 时间:2024/06/05 17:39

Godep介绍

在21章中,介绍了官方go get的缺陷。go get最主要的问题是没有版本号的概念。每次拉取的都是master分支。

本章将介绍下,一个github上开源的包管理项目:Godep。github地址为:

https://github.com/tools/godep

该工具可以将项目中所依赖的第3方库,以及版本号保存到名为Godeps.json的json文件中。并可以根据Godeps.json文件,拉取所有依赖库。

Godeps.json

生成的Godeps.json,类似下面的格式:

{    "ImportPath": "github.com/fananchong/go-x",    "GoVersion": "go1.8",    "GodepVersion": "v79",    "Packages": [        "./..."    ],    "Deps": [        {            "ImportPath": "github.com/bitly/go-simplejson",            "Comment": "v0.5.0-8-g0c96595",            "Rev": "0c965951289cce37dec52ad1f34200fefc816777"        },        {            "ImportPath": "github.com/fananchong/gochart",            "Comment": "v2.0-14-g9caf047",            "Rev": "9caf047dcbf244db0802dba9af4284363e429b7f"        },        {            "ImportPath": "github.com/fananchong/gonet",            "Comment": "17.09.09-9-gb0448f0",            "Rev": "b0448f0c0d628399975c332b15ab0e254c9ed3fc"        },        {            "ImportPath": "github.com/golang/glog",            "Rev": "23def4e6c14b4da8ac2ed8007337bc5eb5007998"        }    ]}

工作原理

在没有该工具前,通常go程序员都会自己编写个go get脚本,保存第3方依赖库信息。

go get脚本格式会类似这样:

set GOPATH=%~dp0go get -u -d google.golang.org/grpc/...go get -u -d github.com/coreos/etcd/clientv3/...go get -u -d github.com/fananchong/go-discovery/...cd %GOPATH%/src/github.com/coreos/etcd/clientv3git checkout --no-track -B Branch_v3.2.9 v3.2.9 --cd %GOPATH%/src/google.golang.org/grpcgit checkout --no-track -B Branch_v1.5.2 v1.5.2 --cd %GOPATH%

通过 go get 以及 git checkout ,来保证下载正确的版本。

这样做的效果和 Godep本质上没有什么差别。

相比一下,使用 Godep 的好处主要有以下几点:
- 显的逼格高点
- 通过Godeps.json文件描述,依赖库一目了然
- 依赖库最小集。通常自己写go get脚本很难做到最小集下载
- 不需要自己查看并记录所使用的依赖库的版本号

应用示例

可以参考本人github上go-x下的例子:

https://github.com/fananchong/go-x/tree/master/Godeps

go-x/Godeps/gen.bat脚本为根据Godeps.json文件拉取第3方依赖库
go-x/Godeps/save.bat脚本为保存当前第3方依赖库信息到Godeps.json文件中

go-x项目拉取后,执行gen.bat,拉取第3方依赖库;第3方依赖库在go-x/Godeps/src中变更后,则执行save.bat,保存最新的第3方依赖库信息到Godeps.json文件

gen.bat

脚本内容如下:

rd /q /s srcset GOPATH=%~dp0cd %GOPATH%\..%GOPATH%\..\tool\godep\godep.exe restorepause

save.bat

脚本内容如下:

rd /q /s D:\tmpmkdir D:\tmpmove /y src D:\tmp\srcset CURDIR=%~dp0set BASEDIR=%~dp0set BASEDIR=%BASEDIR:\src\github.com\fananchong\go-x\Godeps\=\%set GOPATH=%BASEDIR%;D:\tmpcd %CURDIR%\...\tool\godep\godep.exe save -v ./...rd /q /s vendorcd %CURDIR%gen.bat
阅读全文
0 0
原创粉丝点击