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纔行。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章