dubbo-godubbo-go的examplego getGOPATHdubbo-samples/golang/go.modgo mod
官方文档: https://github.com/golang/go/wiki/Modules
module介绍
go modulego modulego modulego module
go.mod文件
go.modgo.mod模块根go.moddubbo-samples/golanggo.modgithub.com/apache/dubbo-samples/golangmodulegithub.com/emicklei/go-restful/v3 v3.0.0
后面会继续介绍 go.mod 文件。
如何使用 go module ?
第一步
1.111.15
第二步: 设置 GO111MODULE
1.12go moduleGO111MODULE1.13GO111MODULEgo module
offonauto(默认)
GO111MODULE=offgo modulevendorGOPATHGOPATHGO111MODULE=ongo moduleGOPATHvendorgo.modmodule-awareGOPATHbuildGOPATH/pkg/modGO111MODULE=autoautoGOPATH/srcgo.modgo module
GO111MODULE
MacOS 或者 Linux 下开启 GO111MODULE 的命令为:
GO111MODULE
GO111MODULEgo moduleGOPATH
第三步: 设置GOPROXY
proxygo getGOPROXYGOPROXYGOPROXY
goproxy.io;goproxy.cngoproxy.cngo module
go 1.3版本之后,可以通过以下命令修改(推荐):
也可以通过修改操作系统环境变量
Mac系统执行以下命令
文件最后写入:
source ~/.bash_profile
第四步: 配置 Goland
GoLand 2019.3go module
2.Preferences -> Go -> GOPATH,勾选上 Index entire GOPATH 以索引整个 GOPATH,不然无法导入包。如图所示:
go module使用过程
因为正在学习dubbo-go,所以下面就以dubbo-go来演示一下过程。
1.新建一个项目
dubbo-servermain.go
modulego.mod
go mod initgo.modgo.modmodulego mod initgo mod initgo.sumgo.sumgo.sumgo.mod
wangsaichaodeMacBook-Pro:dubbo-server wangsaichao$ go mod init
go: creating new go.mod: module dubbo-server
go.mod不能存在go mod init
go module
go.modgo toolchaingo toolchaingo getgo buildgo modgo.mod
2.将刚才创建的 dubbo-server 项目完善成一个 dubbo的服务端。
dubbo-sampleshelloworldgo.modgo.mod
go modulepackagerelease tagtagcommit
go.mod文件介绍
go.modModule根目录go.mod模块根GOPATHgo.mod
go.mod///**/
动词+括号
go.modgomodulerequirereplaceexclude
gomodulerequirereplaceexclude
虚拟版本号
v0.0.0-yyyymmddhhmmss-abcdefabcdefUTC时间哈希值前缀commit哈希值虚拟版本号
找到项目最后一次提交的commit id
在go mod 的require里面引入项目的last commit id
requirecommit id: 510aa62
执行
commit id
go mod常用命令
go mod init
go mod init [module]go.modgo.modmodulego mod init
go mod download
go mod download [-dir] [-json] [modules]path@versiongo mod download-jsonJSON
go envGOCACHEgo clean -cache
go mod tidy
go.modgo mod tidygo mod tidy [-v]-vgo mod tidy -v
go mod vendor
go mod vendor [-v]buildvendorgo mod vendor -vvendor
go mod verify
go mod verifyall modules verified
go list -m all
module-jsongo list -m -json all
go mod graph
打印模块依赖图