* 在 go 的 mod 文件中,都会有 require 模块,包含了项目中需要使用到哪些依赖包和依赖包的地址,例如:
require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/golang/protobuf v1.4.3 // indirect
)
* 一般都是github地址,但是如果想使用自己的gitlab地址或者私有库地址,怎么办呢?
* 办法是有,但是相对比较复杂,以下解决方案仅做参考:
* 假设我们要使用到两个私有库,分别叫 myrep1 和 myrep2
* 假设你的私有库域名为 http://www.mygitlab.com:8000
* 我们需要注册一个 github 账号,假设我们创建了 github 账号为 my-hub
* 在 github 账号上添加和私有库同名的两个库, 分别叫 myrep1 和 myrep2
* 配置 go 环境变量
# 配置私有仓库地址
go env -w GOPRIVATE=github.com/my-hub/myrep1,github.com/my-hub/myrep2
# 设置私有库不走代理
go env -w GONOPROXY=github.com/my-hub/myrep1,github.com//my-hub/myrep2
go env -w GONOSUMDB=github.com/my-hub/myrep1,github.com//my-hub/myrep2
* 配置 git 的环境变量,增加url替换规则
git config --global url."http://www.mygitlab.com:8000/myrep1.git".insteadOf "https://github.com/my-hub/myrep1"
git config --global url."http://www.mygitlab.com:8000/myrep2.git".insteadOf "https://github.com/my-hub/myrep2"
* 配置 git 的默认账号密码
cd /root
vi .netrc
# 添加如下内容, password可以是真实的密码,也可以是 personal access token
machine www.mygitlab.com login <username> password <password/token>
* 在 go.mod 文件中添加私有库
require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/golang/protobuf v1.4.3 // indirect
myrep1 v1.0.0
myrep2 v1.0.0
)
* 然后使用 go mod download 尝试,是否可以正常获取到私有库代码