go-module初试

go module

go module 是go官方提供的包管理工具,相比glide,dep这些包管理工具,go mod还是比较新的,目前还没有被大范围使用。本人比较喜欢尝鲜,已经在项目中尝试使用了,期间也遇到一些坑,不过目前使用下来也基本没有什么问题,下面就把使用过程和大家分享一下吧!

运行目录对比

  • 不使用mod
    • 只能运行在go path下面
  • 使用mod
    • 可运行在任何目录,不依赖go path
    • 如果要在go path下运行需配置GO111MODULE=on环境变量

几个关键命令

  • go mod init
    • initialize new module in current directory
  • go mod tidy
    • add missing and remove unused modules
  • go mod vendor
    • make vendored copy of dependencies

翻译一下:

go mod init 用来将当前目录初始化成 go mod 管理的目录
go mod tidy 用来更新项目中的依赖
go mod vendor 用来将项目中的依赖包全部copy到vendor目录下,方便项目在其他没有 go mod 的环境上编译

几个坑的地方

  • 运行 go mod init 会报 go: cannot determine module path for source directory,需要在main.go中声明导入的依赖
  • 本地包依赖方式,在go.mod文件中添加如下配置:
1
2
3
4
replace com.test.a => ../a
其中 com.test.a 为项目中使用的包名
../a 为该包在当前机器代码的相对路径
小伙伴,如果您觉得文章还不错,欢迎您的支持,我会继续努力创作!