标签:auto 私有库 依赖管理 pac erp 效果 get message 默认
go modules官方资料:https://github.com/golang/go/wiki/Modules
Go 1.5 Release之前
使用GOPATH,包管理、项目代码都依赖于GOPATH,项目代码位于GOPATH的src文件夹之下;
Go 1.5 Release到Go 1.10 Release
使用vender目录来管理包依赖(Go 1.5需要配置,Go 1.6及之后默认打开);
查找依赖包路路径的解决?方案如下:
常?用的依赖管理工具
godep https://github.com/tools/godep
glide https://github.com/Masterminds/glide
dep https://github.com/golang/dep
Go 1.11 Release到Go 1.13 Release
使用go modules模块(module-mode)进行依赖管理,在go1.11与go1.12要设置环境变量GO111MODULE=auto
启用module-mode;在go1.13中GO111MODULE=auto
为默认设置,即默认启用module-mode,不需要设置了。
GO111MODULE=auto
启用,go 1.13默认启用,用于go项目的依赖管理。当编译、运行go项目时,若发现后缀有.mod
文件时即启用module-mode来编译、运行项目。.go
文件中需要的模块;go.mod
文件;go get foo@v1.2.3, go get foo@master, go get foo@e3702bed2
)来指定项目中所依赖的模块具体版本,也可以通过编辑go.mod
文件来指定以来版本GO111MODULE=auto
go.mod
文件来确定是否使用module-mode;GOPRIVATE
GOPRIVATE
配置私有库或项目的地址。go env -w GOPRIVATE=*.corp.com,github.com/secret/repo
GONOPROXY
GONOSUMDB
1、开启go modules并设置反向代理
上面已说过,go1.13以上版本GO111MODULE默认已自动开启,不需要重新设置;反向代理主要用来解决获取包时的网络限制,需要设置一下
linux环境下,再终端输入:
export GO111MODULE=auto
export GOPROXY=https://goproxy.io
不过这种是一次性的,重启之后就会消失,所以可以在环境信息文件/etc/profile
的最后面添加上下面这两行,最后使用source /etc/profile
让其生效
windows环境下设置,在系统环境变量中新增GO111MODULE和GOPROXY,如下图:
另外一种方法是使用Goland IDE vgo,设置如下:
2、在GOPATH 之外的地方,新建一个空文件夹go-mod-test,执行go mod init命令初始化(注意cd到go-mod-test目录下)
go mod init初始化命令会在当前目录下生成一个go.mod文件,内容如下:
3、添加依赖包,以gin为案例,gin传送门https://github.com/gin-gonic/gin
在目录中创建一个 main.go
的文件,放上如下代码(代码为gin官方启动实例):
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }
4、执行go mod tidy命令(也可以执行:go build/go run),执行完成后,看一下 go.mod
文件
看到新增一个 gin v1.5.0 的包,还发现目录下成了一个 go.sum 的文件,这个文件可以暂时先不管
此时,你可能很好奇,目录中没发现 gin 包,包下载到哪了?
下载到了 GOPATH/pkg/mod 目录中
5、go run main.go运行一下,在浏览器中输入:localhost:8080/ping,运行效果如下
搞清楚go modules用法后,顿时感觉go包管理方便了好多,可以脱离GOPATH创建项目了,同时包可以指定特定版本了,
反向代理的设置终于摆脱网络限制了,之前很多包由于网络原因下载不下来,简直是噩梦啊
go mod init: 初始化modules
go mod download: 下载依赖的module到本地cache
go mod edit: 编辑go.mod文件,选项有-json、-require和-exclude,可以使用帮助go help mod edit
go mod graph: 以文本模式打印模块需求图
go mod tidy: 检查,删除错误或者不使用的modules,以及添加缺失的模块
go mod vendor: 生成vendor目录,将依赖复制到vendor目录下面
go mod verify: 验证依赖是否正确
go mod why: 解释为什么需要依赖
go list -m: 查看主模块的路径
go list -m -f={{.Dir}}: 查看主模块的根目录
go list -m all: 查看当前的依赖和版本信息
命令使用:
1、go list -m all //列出项目使用的依赖包
2、go list -m -versions github.com/gin-gonic/gin //查看依赖的版本历史
3、go get github.com/gin-gonic/gin@v1.4.0 //依赖包更新到指定版本
4、go mod edit -require="github.com/gin-gonic/gin@v1.4.0" // 修改 go.mod 文件(从v1.5.0变成了v1.4.0)
5、go mod tidy //下载更新依赖
标签:auto 私有库 依赖管理 pac erp 效果 get message 默认
原文地址:https://www.cnblogs.com/marshhu/p/11961476.html