go Module包管理器

132 阅读2分钟
1、设置go mod环境变量

export GOPROXY=goproxy.cn/

export GOPRIVATE=*gitee.com #私有仓库域名,不走go proxy

2、初始化工程项目,设置包名

go mod init imooc.com.demo

将main.go 文件中import引入的包,就会缓存到本地。

go mod tidy

3、调用本地不同项目中函数方法

在gomod-demo项目中,引入gomod-demo1项目中的Demo1函数

在go.mod文件中使用replace语法映射包到本地,这样就可以调用到不同项目中的模块。

4、私有远程仓库,内部包使用演示

1)将代码gomod-demo1 提交到私仓,设置为public

2)修改gomod-demo1 包名module gitee.com/phper95/go-demo1

3)在gomod-demo 工程中导入demo1的私有库路径并同步依赖

#在gitee.com 创建一个仓库并设置为开源的

#进入到项目中,执行初始化命令,设置本地仓库

git init

#将gitee上远程仓库地址复制,设置成本地的仓库的远程路径

git remote add origin git@gitee.com:baymax99/gomod-demo1.git

#打开项目中go.mod 修改下模块路径,和远程仓库保持保持一样。

#提交代码到远程仓库

git add .

git commit -m"init"

git push origin master

如果push远程仓库,出现错误,error: failed to push some refs to 'gitee.com:baymax99/gomod-demo1.git'

通常原因:远程库和本地库不一致。通常出现在初始化仓库有readme而本地没有等情况使用

把远程库中的更新合并到本地库中,–-rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。然后再进行push即可。( git pull --rebase origin master)

#将私有仓库引入包,缓存到本地

git mod tidy

#执行测试

5、go module的包校验

go.sum 文件保存了依赖包的hash值,GOPRIVATE 包将不会做checksum校验

#使用这个命令,可以将工程项目所依赖的包,全部解析完成后复制到vendor目录下了,下次再编译的时候会直接从vendor目录里获取我们的依赖包。

go mod vendor