在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. go module简介go module是go在1.11版本引入的新的版本依赖工具,是对vendor方式的一次升级. 目前是如果项目位于GOPATH下则会默认禁用go modoule,否则就会默认启用. 因此首先需要将项目移出GOPATH,假设位于~/dev/smmodule目录下. 2. 使用go mod命令管理项目这里以我们的Photon项目为例,来说明如何实施. 2.1 初始化环境
这时就会在Photon下产生了go.mod 文件,如果打开就会看到只有一句话
这个路径是因为我这个项目在github上的路径是 github.com/nkbai/Photon ,但是实际上,我这个项目只是module github.com/SmartMeshFoundation/Photon ,所以需要直接将其内容修改为
2.2 构建这时候我们进入cmd/photon目录,执行 2.2.1 需要FQ的源码怎么办?直接打开go.mod 添加replace项,
这表示系统依赖的 golang.org/x/net v0.0.0 这个版本应该从github.com/golang/net 这个地方下载 2.2.2 我依赖的不能是最新的代码怎么办我们的项目以前用的是vendor方式,可能依赖的是某个项目较早的版本,但是go下载的确实最新的版本,这时候只需到项目主页找到你依赖的版本号即可. 比如Photon依赖的storm,go自动下载的是最新的2.1.2,但是无法编译. 这样就可以正常编译了. 2.2.3 我依赖的某个项目是我修改过的,和官方版本不一样怎么办比如Photon依赖的go-ethereum实际上不是官方的任何一个版本,是根据我们自己的需要,做了修改的版本. 那么这时候也很简单,直接clone一个官方的版本到自己的github上,然后修改. 待修改完毕以后,新建一个版本即可. 比如我就把 github.com/ethereum/go-ethereum clone到我自己的github上,然后按照vendor中的修改重新来一遍,然后打了一个v1.9.1的tag. 然后同样replace成下面的. 2.2.4 其他注意事项由于go mod目前处于较早起版本,我们手工修改文件要特别注意 否则会碰到莫名其妙的问题.我说一下我碰到的两个问题
3. 保持兼容性将原来的vendor目录移回来,这时候你会发现项目没什么变化,只是多了两个go.mod和go.sum两个文件,直接添加将其提交到github即可. 这时候,你这个项目既可以在GOPATH下像以前一样管理,也可以在独立的其他目录中编译运行. 4. 使用goland来管理你的新版项目记得新建项目,并且在新建的时候选择go module即可. |
请发表评论