这篇文章主要介绍了golang依赖管理之国防部的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
golang依赖管理之mod
去很早就考虑了依赖管理的问题,内置<代码>去> 代码命令,可以直接获取对应的依赖,非常方便,但是有一个巨大的缺陷,没有版本的维护和管理,而版本不一致可能会导致各种兼容性问题,因此出现了很多第三方依赖管理工具,<代码> dep 代码>和<代码> 代码>就滑是其中的佼佼者,到1.11了去官方终于推出了自己的依赖管理工具<代码> mod> 代码,并内置在去版本中,<代码>去国防部> 代码使用简单,功能强大,并且能自动兼容大多数之前的第三方工具,大量优秀的开源库都已经切换到了<代码>去国防部> 代码,大有一统江湖之势
GO111MODULE
一个最大的变化是golang的项目终于不再依赖GOPATH美元<代码> 代码>目录了,之前的项目由于<代码> 代码>机进口制问题,所有项目都位于<代码> GOPATH美元/src/<代码>目录下,虽然也没有太大的问题,但总是让人感觉很怪,走1.11终于调整了这个问题,将代码从GOPATH美元<代码> 代码>中迁出了,为了兼容之前研发模式,也仍然支持放到<代码>美元GOPATH> 代码下,通过<代码> GO111MODULE 代码>环境变量控制
- <李>
<代码> GO111MODULE=了> 代码:关闭模,查找<代码>供应商代码>目录和GOPATH美元<代码> 代码>路径下的依赖
李> <李><代码> GO111MODULE=> 代码:开启mod,仅根据<代码>。国防部> 代码下载和查找依赖
李> <李><代码> GO111MODULE=汽车> 代码:默认值,在非GOPATH美元<代码> 代码>路径并且包含<代码>。国防部> 代码的项目中才开启mod
李>主要命令
go mod init ,,,, #,在新的,go 项目中执行,自动分析依赖,创建,go.sum go mod  tidy ,,,, #,自动分析依赖,并自动添加和删除依赖 go mod  vendor ,, #,创建,vendor 目录,将依赖拷贝到当前的,vendor 文件夹下 go mod  download #,手动下载依赖
- <李>
对于一个新去的项目,只需要新建项目的时候执行一下<代码>去国防部init 代码>
李> <李>之后每次库更新,只需要先在代码中导入对应库,然后执行<代码>去国防部整洁> 代码即可(也可用<代码>去国防部下载代码>手动下载)
李>库版本更换
手动修改<代码>。国防部代码>文件中的需要字段,重新执行<代码>去国防部整洁> 代码即可
require ( ,,还以为;github.com/gin-gonic/gin v1.4.0 )
golang的版本使用以v <代码> 代码>开头的三位版本号,其中第一位表示有重大本本的更新,当发布一个<代码> v2 + 代码>版本的库时,<代码>模块我的模块> 代码应该改为<代码>模块我的模块/v2> 代码,否则引入该库需要在增加<代码> +不兼容的> 代码后缀
require ( ,,还以为;github.com/lestrrat-go/file-rotatelogs v2.2.0 +不相容的 )
解决GFW问题
因为一些原因,国内的网络访问不到golang.org上的库,好在大部分库在github上都有镜像,可以用<代码>替换代码>命令设置镜像、下面是我碰到的一些库
replace ( ,,还以为;cloud.google.com/go =祝辞;github.com/googleapis/google-cloud-go , v0.0.0 c8433c9aaceb——20190603211518 ,,,go.etcd.io/bbolt =祝辞;github.com/etcd-io/bbolt , v1.3.4 e135e5d7e3d——0.20191001164932 - 6 ,,还以为;go.uber.org/atomic =祝辞;github.com/uber-go/atomic , v1.4.1 ef0d20d85b01——0.20190731194737 ,,还以为;go.uber.org/multierr =祝辞;github.com/uber-go/multierr , v1.2.0 ,,还以为;go.uber.org/zap =祝辞;github.com/uber-go/zap , v1.10.1 d8445f34b4ae——0.20190926184545 ,,还以为;golang.org/x/crypto =祝辞;github.com/golang/crypto , v0.0.0 f99c8df09eb5——20190605123033 ,,还以为;golang.org/x/exp =祝辞;github.com/golang/exp , v0.0.0 efd6b22b2522——20190510132918 ,,还以为;golang.org/x/image =祝辞;github.com/golang/image , v0.0.0 f03afa92d3ff——20190523035834 ,,还以为;golang.org/x/lint =祝辞;github.com/golang/lint , v0.0.0 b441ac422——20190409202823 - 959 ,,还以为;golang.org/x/mobile =祝辞;github.com/golang/mobile , v0.0.0 - 20190607214518 - 6 - fa95d984e88 ,,还以为;golang.org/x/net =祝辞;github.com/golang/net , v0.0.0 cefac77f——20190606173856 - 1492 ,,还以为;golang.org/x/oauth3 =祝辞;github.com/golang/oauth3 , v0.0.0 f29369cfe45——20190604053449 - 0 ,,还以为;golang.org/x/sync =祝辞;github.com/golang/sync , v0.0.0 - 20190423024810 - 20190423024810 c58 ,,还以为;golang.org/x/sys =祝辞;github.com/golang/sys , v0.0.0 c4f7f33c9ed——20190602015325 - 4 ,,还以为;golang.org/x/text =祝辞;github.com/golang/text , v0.3.2 ,,还以为;golang.org/x/time =祝辞;github.com/golang/time , v0.0.0 d24e82272b4——20190308202827 - 9 ,,还以为;golang.org/x/tools =祝辞;github.com/golang/tools , v0.0.0 eacb66d2a7c3——20190608022120 ,,还以为;google.golang.org/api =祝辞;github.com/googleapis/google-api-go-client , v0.6.0 ,,还以为;google.golang.org/appengine =祝辞;github.com/golang/appengine , v1.6.1 ,,还以为;google.golang.org/genproto =祝辞;github.com/google/go-genproto , v0.0.0 eb0b1bdb6ae6——20190605220351 ,,还以为;google.golang.org/grpc =祝辞;github.com/grpc/grpc-go , v1.21.1 null nullgolang依赖管理之国防部的示例分析