Go项目包管理方法

企业级Go项目包管理方法

Go包管理困境

  • 没有统一的包管理方式
  • 包之间的依赖关系很难维护
  • 如果同时需要一个包的不同版本,很麻烦

尝试解决

  • godep、govendor、glide
  • 未彻底解决GOPATH问题
  • 使用起来麻烦

Go Modules

  • 本质上Go包就是一个项目的源码
  • go mod作用:将Go包和Git项目关联起来
  • Go包的版本就是git项目的Tag
  • go mod解决:需要哪个git项目的什么版本

使用Modules

项目地址

  • github.com/Jeffail/tunny
1
2
3
go get github.com/Jeffail/tunny

go get github.com/Jeffail/tunny@0.1.3

Github无法访问

  • 使用goproxy.cn作为代理
1
go env -w GOPROXY=https://goporxy.cn,direct

使用本地文件替代

  • go.mod 文件追加
1
replace github.com/Jeffail/tunny => xxx/xxx
  • go vendor 缓存到本地
1
2
3
go mod vendor

go build -mod vendor

创建Go Module

  • 删除本地go.mod
1
go mod init github.com/仓库地址路径
  • 推送至代码仓库

  • 增加新版本,在仓库打新Tag


Go项目包管理方法
http://example.com/2022/12/18/Go项目包管理方法/
Author
WYX
Posted on
December 18, 2022
Licensed under