go开发中很多功能需要做成模块方便团队项目引用,避免重复开发,这时候就需要把模块上传到git仓库,其他项目只需要通过go get添加如项目就可以直接使用。具体操作方法如下:
1.创建module
- 项目的mod文件中module 写成自己的git仓库名,比如github.com/XXX/module; 并且把模块仓库设置成私有
- 本地化仓库(具体git操作这里不罗列了)
- git添加module模块仓库,并把本地仓库与远程此仓库绑定
- 把本地代码推送到远端
2.go环境添加私有仓库设置
- 控制台中输入go env -w GOPRIVATE="github.com/XXX/*";这里XXX替换成你git的仓库.当然如果你的git仓库不是github只要做相应替换
3.到需要引入此模块的项目中通过go get github.com/xxx/module@latest获取次模块
特别注意:很多人可能会有疑虑为啥要设置成私有仓,如果公有仓库是不是就不需要设置go env了,答案是对的。但是你们可能会遇到一个仓库缓存问题。这个问题我分析大概是由于GOPROXY引起的。由于国内访问github收到限制,肯定会设置代理的。设置了代理有经常会遇到一个大难题。比如你更新了模块并发布了。但是通过go get怎么也无法升级到你当前的版本甚至你把远程代码仓都删除了依然可以拉取到代码,分析大概是代理缓存了仓库代码。所以在项目开发的工具类的模块(经常变动的)建议用私仓库,推送后立即拉取就是最新的。