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

打印模块依赖图