golang之go mod自动下载私有仓库gitlab中的包

我的环境:

golang:  v1.13.5

系统:window10, window7, linux(centos)

环境变量:GOPROXY=https://proxy.cn,direct

 

假如我在私有仓库http://gitlab.mylab.com上有个hello/hi包,地址当然就是http://gitlab.mylab.com/hello/hi,有发布tag v1.0.0。

在我的go项目里引用:

main.go:

package main

import (

    _  "hello/hi"

)

func main(){

}

go.mod:

module  main

require (

       hello/hi v1.0.0

)

//通过replace设置, go get、go mod download等命令过程会去下载gitlab.mylab.com/hello/hi v1.0.0

replace hello/hi v1.0.0 => gitlab.mylab.com/hello/hi v1.0.0

 

先说windows系统上:

 

直接编译,会报https 443端口连接错误,拉不到gitlab项目,当然了,因为gitlab 是http 80端口。

在项目所在目录执行如下命令也是一样报错。

go mod download hello/hi

 

然后执行了一句命令:

go get -insecure hello/hi

这样拉下来一次(如果配置了GOPATH环境变量,拉下来的包在${GOPATH}/pkg/mod里,否则是在${USER}/go/pkg/mod里)之后,神奇的事情发生了,直接编译可以成功拉到gitlab上的包了。

并且执行如下命令也可以成功拉取了:

go mod download hello/hi

 

尴尬的是,再执行go get -insecure hello/hi反而报错:missing dot in first path element。

 

 

再来说centos系统:

与windows设不设GOPRIVATE都一样的情况略有差异,linux上必需要先设置环境变量GOPRIVATE="我的gitlab地址",告诉go这是一个私有仓库,不要用代理去拉,而是直接拉。好了,剩下的与windows一样,还是要先执行一次go get -insecure hello/hi才行。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值