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