golang 语言依赖管理

  1. 通过环境变量,直接 去GOPATH 去找

    1. 不同版本可能会存在 不兼容,因此 会比较麻烦
    2. 代码 clone 以后需要设置 GOPATH 才能编译
  2. vendor

    1. 自 1.6 版本,支持vendor目录,每个go项目中创建一个 vendor的目录,并且将依赖拷贝进去
    2. go语言项目自动将 vendor目录作为依赖路径
      1. 好处
        1. 无需编译期间下载 依赖包,所有依赖都已经与源代码保存一起
        2. vendor 目录与源码一起 check in 到github,其他人 checkout 可以直接编译运行
  3. gomod

    1. go社区自己提供的依赖管理工具 Gopkg
      1. 切换 mod 开启模式: export GO111MODULE=on/off/auto

依赖管理工具的好处:

  1. 版本管理
  2. 防篡改 【降低后序维护成本】
1
2
3
4
5
6
go mod tidy 
# 自动下载 和构建依赖,下载引用的依赖

# golang 自带 vendor 工具, 将依赖的框架下载到 vendor目录,然后 提交到仓库,别人下载能直接 运行,好处就是 不会配环境也能运行
go mod vendor
# 想让 别人直接运行,就 go mod vendor

replace目录 修改 仓库路径

1
2
3
replace (
	"golang.org/x/crypto" => "gitlab.io.xxx/xxx.xx"
)

将公网的项目 改为 从 其他仓库下载【相当于重定向】

Makefile 使用

go语言 和 c 是一脉相承的, 因此 也支持 makeFile

1
2
make root
# makefile 里面有 命令root,可以直接调用 root