在项目上,经常需要使用外部的包来实现相应的功能,当多个人同时进行开发时,就需要一个包管理器,每个人通过包管理器将自己代码所调用包,保存在同一个目录地下,然后提交到git上面,当以通进行开发的人拉取代码后,就不需要担心本地没有你的依赖包的问题,从而确保项目开发正常进行,下面介绍golang1.11版本后的go mod使用方法。
【1】与go mod相关的环境变量
GO111MODULE环境变量,你可以将这个环境变量配置为:auto、on、off,默认为auto,默认情况下你通过go get下载的包会自动保存在GOPATH目录地下的pkg目录里面,这样当你import的时候只需要写github.com/xxxx,当你与同事共同开发项目的时候,如果你所更新的代码中导入了新的包,但是你同事那边没有,那他想要运行代码就必须把你go get的数据包全部go get,然后才能继续开发,相当麻烦。
【2】上面讲了应用场景,现在说一下解决方法
go mod有两种应用场景,一种是在GOPATH目录地下进行开发,还有一种就是在GOPATH目录以外的目录进行开发。
第一种:在GOPATH目录地下进行开发
这种情况下,你需要将GO111MODULE环境变量设置为on,然后执行下面步骤:
- 在项目目录地下执行:go mod init name 初始化modules,初始完成后会在目录下生成一个go.mod文件,里面的内容只有一行“module test”。注意:name可以为任意名称,一般为项目名称。
- 在项目目录底下执行:go mod tidy 第一次执行会生成一个.sum文件,这条命令会自动更新依赖关系,并且将包下载放入cache。
- 在项目目录地下执行:go mod vendor 这时go mod会创建一个vendor目录,然后自动将代码中所调用的包保存到vendor目录里面。
第二种:不再GOPATH目录地下进行开发
这种情况下,你需要将GO111MODULE环境变量设置为auto或off,然后执行的步骤与第一种情况相同。
然后你会发现你的代码不再GOPATH中依然可以运行和编译。