随着go语言的不断完善,模块的使用可能会移除对GOPATH和go get命令的支持。
我们可以尝试的使用mod文件,不再将代码仅仅是存放在GOPATH/src目录之中,而是我们自定义工作目录都可以顺利导包。
我们需要在那个目录下创建一个go.mod文件,从文件目录中运行go命令。
一、模块概念介绍
moudles
1.1 认识go.mod文件
// go.mod
module Micro-Go/ch13/13.2
go 1.16
require (
github.com/gogo/protobuf v1.3.2
github.com/golang/protobuf v1.5.2
)
Micro-Go/ch13/13.2github.com/gogo/protobuf v1.3.2github.com/golang/protobuf v1.5.2
1.2 go.mod文件的模块引入、替换、排除
go.mod文件还可以指定要替换和排除的版本,命令行会自动根据go.mod文件来维护需求声明中的版本。
go.mod中一般常出现三个关键字:
require : 项目需要的依赖包及版本
exclude : 排除某些包的特别版本
replace : 取代当前项目中的某些依赖包。
如下所示:
module Micro-Go/ch13/13.2
require (
github.com/gogo/protobuf v1.3.2
github.com/golang/protobuf v1.5.2
)
exclude my/utils v1.2.11
replace cart/goods v1.4.5 => cart/allgoods v1.4.5
二、go.mod文件相关的命令
命令行输入: go help mod
download download modules to local cache
edit edit go.mod from tools or scripts
graph print module requirement graph
init initialize new module in current directory
tidy add missing and remove unused modules
vendor make vendored copy of dependencies
verify verify dependencies have expected content
why explain why packages or modules are needed
go envGOCACHEgo clean -cachego.mod
三、常见go.mod管理的工程创建流程
前提: Go编译器版本(>=1.11) 、环境变量 set GO111MODULE=on
go mod init
go mod initgo.modgo.mod
2、如果你工程中存在一些不能确定版本的包,那么生成的go.mod文件可能就不完整,则继续执行下面的命令:
go mod tidy
go.sumgo mod tidy -v
go mod verify
执行命令go mod verify来检查当前模块的依赖是否全部下载下来,是否下载下来被修改过。如果所有的模块都没有被修改过,那么执行这条命令之后,会打印all modules verified。
go mod vendor
go mod vendorvendor文件夹go.modmodules.txt