* 在 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 尝试,是否可以正常获取到私有库代码

点赞(2) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部