golang的最新项目管理推荐采用module模式。
一、go mod命令使用详解
1.golang版本 go的module管理模式在golang 1.11版本后才能够使用。
2.环境变量的设置 要使用golang的module项目管理模式,需要设置对应的环境变量GO111MODULE的值,该变量有三种类型,如下:
1)GO111MODULE=auto 此为默认值,在此模式下,如果代码在gopath下,则自动使用gopath模式;如果代码不在gopath下,则自动使用GO mod模式。这种情况下可以分为两种情形:
(1)当前目录在GOPATH/src之外且该目录包含go.mod文件
(2)当前文件在包含go.mod文件的目录下面。
2)GO111MODULE=on 此模式下,项目不再使用GOPATH,直接采用module模式管理项目,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
3)GO111MODULE=off 此模式下,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。。
3.各命令的使用
go mod download //下载依赖包 go mod edit //edit go.mod from tools or scripts 编辑go.mod go mod graph //打印模块依赖图 go mod init //initialize new module in current directory 在当前目录初始化mod go mod tidy //拉取缺少的模块,移除不用的模块。 go mod vendor //将依赖复制到vendor下 go mod verify //verify dependencies have expected content 验证依赖是否正确 go mod why //解释为什么需要依赖
二、module的目录结构
projectName |---main.go |---mypack1 |---a.go |---b.go |---mypack2 |---c.go |---d.go |---go.mod |---go.sum |---vendor |---github.com/... |---golang.org/...
注意,利用go mod init命令初始化时的module名字要与main.go中引入时的一致。例如:
go mod init projectName
则在main.go中要如此引用:
package main import ( "projectName/mypack1" "projectName/mypack2" ) func main() { ...