go Module管理

一、创建一个Module

1、新建模块文件夹(它的目录要在 GOPATH 之外,因为默认情况下,GOPATH 里面是禁用 modules 支持的)

$ mkdir testmod
$ cd testmod

2、现在还只是一个文件夹,如果要变成module,就需要初始化(上传到github对外给他人使用的话,需要使用此默认格式:github.com/github昵称/module名)

$ go mod init github.com/chenycu/testmod
  1. 初始化git项目,并在github上新建repositories,本地仓库添加远程地址
git init
git add *
git commit -m "first commit"
git remote add origin https://github.com/chenycu/testmod.git
git push -u origin master

现在任何想用这个包的人都可以通过go get命令获取,在自己的module目录下执行如下命令

go get github.com/chenycu/testmod

获取到的Module源码在GOPATH/pkg/mod/目录下

二、发布版本控制

版本号格式为v主要版本.次要版本.修订版本 例如:v1.0.0
设置版本号我们使用git tag命令
考虑到兼容性,module的每一个主要版本我们最好新建一个分支来存放

$ git checkout -b v1
$ git push -u origin v1
$ git tag v1.0.0
$ git push --tags

这样我们在master分支中修改代码不会影响到主要版本,master中的问题修改完毕后,合并到v1分支,设置tag为v1.0.1重新push到v1远程分支后生效。

如果需要更新主要版本,最好的做法是,再新建一个分支v2,设置tag为v2.0.0提交。

三、更新Module

我们可以在自己的Module目录下 使用go get 来更新 module:

  • 运行 go get -u将会升级到最新的次要版本或者修订版本(比如说,将会从 1.0.0 版本,升级到——举个例子——1.0.1 版本,或者 1.1.0 版本,如果 1.1.0 版本存在的话)
  • 运行 go get -u=patch 将会升级到最新的修订版本(比如说,将会升级到 1.0.1 版本,但不会升级到 1.1.0 版本)
  • 运行 go get package@version 将会升级到指定的版本号(比如说,github.com/chenycu/testmod@v1.0.1
四、下载Module

由于被墙的关系,下载module比较麻烦,但是go 1.12后有一个环境变量GOPROXY,我们可以直接在module目录下执行如下命令设置GOPROXY

set GOPROXY=https://goproxy.io

设完就可以下载被墙的包了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。