Go Module包管理工具 + Govendor包管理


Go Mod

Go 1.11提出的新的包管理思路,支持用 模塊 的方式看一個Go程序,用go.mod管理版本信息,基本是自動生成 

GO111MODULE=on //忽略vendor和gopath下的文件夾

1. 基本操作

 生成空的go.mod文件

go mod init <your module path>

 自動填寫依賴,生成go.sum。sum主要為了記錄曾經用過的以來,用版本的hash做記錄。

go build

    更改完后,查看當前依賴和版本 ===> 需要重新 go build 更新 mod 文件

go list -m all
go list -m -version '可能是git上的鏈接' //查看過去版本號

    如果需要手動修改依賴,使用分支版本/過去的版本,用以下命令行:

go mod edit -replace 'module name'

  回退版本:

 

go get github.com/gin-gonic/gin@v1.1.4 獲取之前版本,這樣版本就回退了。。

go mod edit -require="github.com/gin-gonic/gin@v1.1.4"  + go tidy  更改依賴版本號,並下載對應包。。

 

升級版本:

 

go get -u  
go get <repos>@<branch name>//update to the lastest version of current branch

下載需要的package

go mod download

2. 其他命令

     清除不需要的依賴

go mod tiny

find out where any of your dependencies are used

go mod why -m <module>

mod生成vendor目錄

go mod vendor

 

3. 代理

1.1時推出的新環境變量,為golang的代碼倉庫做鏡像代理

如何配置:

配置環境變量

export GOPROXY=https://。。。。

proxy失敗后,不會自動回源,因此可以用goc工具,

可用代理:

gocenter.io

 goproxy.io

 

 

Go vendor

過去go vendor提出的包管理工具,原理就是把GOPATH下管理的文件拷貝到項目目錄下的vendor目錄下,如果項目目錄下有vendor文件夾,那優先調用vendor目錄下的依賴。

 

1. 初始化

govendor init

2. 加入現有依賴,一次性加入所有依賴庫

govendor add +external

3. 添加本地GOPATH下的依賴(當你開始編輯了項目,調用了新的依賴)

govendor add [addr]@[version / commit id]

4. 獲取本地不存在 或 不是最新的 (從網上獲取,介於部分依賴地址屬於被安全上網的范疇內,可能需要配置代理)

govendor fetch 

5. 移除

govendor remove [addr] / +unused

 

govendor命令比較簡單,可以直接使用govendor --help獲取提示信息,功能正如字面意思一樣。

-> 有些坑在於,無法解決循環依賴的問題,而且本地庫不夠新,用update會出現沒什么卵用的情況,更新后會瘋狂調用報錯,可能會出現需要大范圍go get更新本地代碼庫==

-> 並且當vendor.json里已經失效包時,需要手動刪除.json里的對應條目

 

介於govendor已經沒有人維護了,可以優先使用go mod,雖然也很垃圾

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM