在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
依赖管理为什么需要依赖管理?最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? 一、godepGo语言从v1.5开始开始引入
安装执行以下命令安装 go get github.com/tools/godep 基本命令安装好godep之后,在终端输入 godep save 将依赖项输出并复制到Godeps.json文件中 godep go 使用保存的依赖项运行go工具 godep get 下载并安装具有指定依赖项的包 godep path 打印依赖的GOPATH路径 godep restore 在GOPATH中拉取依赖的版本 godep update 更新选定的包或go版本 godep diff 显示当前和以前保存的依赖项集之间的差异 godep version 查看版本信息 使用 使用godep在项目目录下执行 其中 vender机制Go1.5版本之后开始支持,能够控制Go语言程序编译时依赖包搜索路径的优先级。 例如查找项目的某个依赖包,首先会在项目根目录下的 godep开发流程
二、go module
GO111MODULE要启用
简单来说,设置 使用 go module 管理依赖后会在项目根目录下生成两个文件 GOPROXYGo1.11之后设置GOPROXY命令为: export GOPROXY=https://goproxy.cn (linux) set GOPROXY=https://goproxy.cn (windows) 阿里源 https://mirrors.aliyun.com/goproxy/ Go1.13之后 go env -w GOPROXY=https://goproxy.cn,direct go mod命令常用的 go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录) go mod edit 编辑go.mod文件 go mod graph 打印模块依赖图 go mod init 初始化当前文件夹, 创建go.mod文件 go mod tidy 增加缺少的module,删除无用的module go mod vendor 将依赖复制到vendor下 go mod verify 校验依赖 go mod why 解释为什么需要依赖 go.modgo.mod文件记录了项目所有的依赖信息,其结构大致如下: module go-micro/my-micro go 1.12 require ( github.com/go-sql-driver/mysql v1.4.1 github.com/golang/protobuf v1.3.2 github.com/grpc-ecosystem/grpc-gateway v1.11.3 // indirect github.com/jmoiron/sqlx v1.2.0 github.com/micro/go-micro v1.12.0 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect go.uber.org/zap v1.10.0 google.golang.org/grpc v1.24.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) 其中,
依赖的版本go mod支持语义化版本号,比如 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 gopkg.in/vmihailenco/msgpack.v2 v2.9.1 gopkg.in/yaml.v2 <=v2.2.1 github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e latest replace在国内访问golang.org/x的各个包都需要FQ,你可以在go.mod中使用replace替换成github上对应的库。 replace ( golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0 ) go get在项目中执行
go get github.com/kataras/iris@master 如果下载所有依赖可以使用 整理依赖我们在代码中删除依赖代码后,相关的依赖库并不会在 go mod edit格式化因为我们可以手动修改go.mod文件,所以有些时候需要格式化该文件。Go提供了一下命令: go mod edit -fmt 添加依赖项go mod edit -require=golang.org/x/text 移除依赖项如果只是想修改 go mod edit -droprequire=golang.org/x/text 关于 三、在项目中使用go module既有项目如果需要对一个已经存在的项目启用
新项目对于一个新创建的项目,我们可以在项目文件夹下按照以下步骤操作:
其他请参考:https://blog.csdn.net/zzhongcy/article/details/97243826 set GO111MODULE=on
|
请发表评论