go mod
Golang1.11版本开始,引入了官方的包管理工具go mod,也就是依赖管理,
项目中go.mod文件是模块定义以及依赖信息集合,
类似maven项目中的pom.xml。
如何使用
1、确保go版本为1.11或更高
本文go版本号为1.16.3
2、开启gomodule
go env -w GO111MODULE=on
3、设置goproxy
使用国内代理提高依赖包下载速度
go env -w GOPROXY=https://goproxy.cn
4、设置项目goPath
项目goPath:相当于工作空间
a、新建目录:D:\work\goWorkspace
b、在该目录下新建src目录,将来我们的项目就存放于src目录
c、创建项目helloGoMod
idea→File→New→Project…
然后next
项目位置:D:\work\goWorkspace\src\helloGoMod
最后finish
d、配置项目goPath
Ctrl+Alt+S→Languages & Frameworks→Go→GOPATH→add Project GOPATH
D:\work\goWorkspace
如果项目无法正常引用依赖,配置Go Modules
GOPROXY=https://goproxy.cn,direct
然后Apply→OK
e、go mod初始化项目
在目录D:\work\goWorkspace\src\helloGoMod>下执行
go mod init helloGoMod
项目中会多出go.mod文件
为什么使用
使用goPath管理项目依赖,
项目必须要放在全局goPath下的src目录中,
依赖包全部是在全局goPath下的pkg包中,
而使用go mod,
我们的项目可以在其它目录下,
下载的依赖包是在项目goPath:D:\work\goWorkspace下的pkg包中,
go mod更灵活,这很酷。
我们在项目下使用go get安装依赖时,会自动维护go.mod文件,
例如:
安装web框架gin
go get -u github.com/gin-gonic/gin
go.mod
module helloGin
go 1.16
require (
github.com/gin-gonic/gin v1.7.1
)
依赖其它自定义模块
我们还有一个模块helloGin
它的go.mod如下:
module helloGin
go 1.16
require (
github.com/gin-gonic/gin v1.7.1
github.com/robfig/cron v1.2.0
github.com/stretchr/testify v1.7.0
gopkg.in/ini.v1 v1.62.0
)
在helloGin的utils下有一个util类:
package utils
import (
"fmt"
"time"
)
func PrintJob() {
fmt.Println(time.Now())
}
想要在helloGoMod中引用helloGin的utils包
需要在helloGoMod的go.mod中添加:
require helloGin v0.0.0
replace helloGin v0.0.0 => ../helloGin
"…/"表示回到上一级目录
调用打印当前时间
package main
import (
"helloGin/utils"
)
func main() {
utils.PrintJob()
}
这里是将依赖替换为了本地包
或者可以将你的代码维护在码云或gitlab上,直接通过go get下载依赖。
go mod命令
例如:
go mod init helloGoMod
不当之处,请予指正。
参考文章:
SanfordZhu:Go go.mod入门
koowave:告别GOPATH,快速使用 go mod(Golang包管理工具)
huzhenwei:go mod模式下引用本地包/模块(module)的方法
张兵帅:Go Module 引入本地自定义包