Go语言go modure的使用以及第三方包的依赖管理

Go语言go modure的使用以及第三方包的依赖管理

Go modure介绍

go modules 是 golang 1.11 新加的特性,主要用来进行项目包的管理,在此之前其实也有其他工具,但是都有一定的不足,想了解的可以自行去查一下,本文主要介绍go mod的使用
(本文假设go相关的东西已经安装好,包括代理GOPROXY=https://goproxy.cn,direct)

环境

通过go env可以查看自己go相关的配置,其中GO111MODULE=“on”表示使用go mod模式,此模式下不会使用$GOPATH,如果GO111MODULE!=“on”,可以通过go env -w GO111MODULE=on进行设置。

使用

此时新建一个文件夹作为本次介绍的试验项目,随便放在哪都可,然后在目录下执行go mod init projectname : projectname就是我们这个模块名,这时我们的目录下就会有一个go.mod文件。

然后再到此目录下新建一个main.go文件,用来做第三包的管理测试,我所在的环境是CentOS,mac和其他linux环境应该相差无几。

然后在文件里加入如下代码:

package main

import (
	"log"
	"os"
	"github.com/goinaction/code/chapter2/sample/search"
)

func init() {
	log.SetOutput(os.Stdout)
}

func main() {
	search.Run("prisident")
}

其中 “github.com/goinaction/code/chapter2/sample/search” 是Go语言实战中的项目路径,读者可以在这里改为其他第三方库均可。
在这里,很神奇的事情就发生了,此时mod组件就会自动把这个第三方包的代码下载到$GOPATH/pkg/mod/github.com路径下了,这就是使用go mod的方便之处,而且,go.mod文件内容会变为:

module firstgo

go 1.13

require github.com/goinaction/code v0.0.0-20171020164608-49fc99e6affb // indirect

这就很方便了,而且go mod 还提供很多命令方便我们进行第三方包的管理:

命令 说明
download download modules to local cache(下载依赖包)
edit edit go.mod from tools or scripts(编辑go.mod)
graph print module requirement graph (打印模块依赖图)
verify initialize new module in current directory(在当前目录初始化mod)
tidy add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
vendor make vendored copy of dependencies(将依赖复制到vendor下)
verify verify dependencies have expected content (验证依赖是否正确)
why xplain why packages or modules are needed(解释为什么需要依赖)

具体的使用读者可以自行进行测试

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章