這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
一、概述
golang的包管理工具有很多,本篇幅主要介紹glide進行包管理。
二、安裝及命令介紹
go get github.com/Masterminds/glide
glide create|init 初始化項目並建立glide.yaml檔案.
glide get 擷取單個包
--all-dependencies 會下載所有關聯的依賴包
-s 刪除所有版本控制,如.git
-v 刪除嵌套的vendor
glide install 安裝包
glide update|up 更新包
三、案例測試
準備:本次測試的包是 github.com/mattn/go-adodb ,這個包其中有一個依賴包是 github.com/go-ole/go-ole
3.1 下載單個包
command: glide get github.com/mattn/go-adodbglide.lock: hash: 60061bf3133f0eec2f147f3d80f3e37c402ee12df8cde841b03d80c82a96bab7 updated: 2016-05-18T23:30:08.5219207+08:00 imports: - name: github.com/mattn/go-adodb version: 452cccbbcfb7906b3cbc512992557c1083e1011b devImports: []glide.yaml: package: glide_demo6 import: - package: github.com/mattn/go-adodb
3.2 下載單個包, --all-dependencies
command: glide get --all-dependencies -s -v github.com/mattn/go-adodbglide.lock: hash: 60061bf3133f0eec2f147f3d80f3e37c402ee12df8cde841b03d80c82a96bab7 updated: 2016-05-18T23:34:48.7545322+08:00 imports: - name: github.com/go-ole/go-ole version: 572eabb84c424e76a0d39d31510dd7dfd62f70b2 subpackages: - oleutil - name: github.com/gonuts/commander version: f8ba4e959ca914268227c3ebbd7f6bf0bb35541a - name: github.com/gonuts/flag version: 741a6cbd37a30dedc93f817e7de6aaf0ca38a493 - name: github.com/mattn/go-adodb version: 452cccbbcfb7906b3cbc512992557c1083e1011b devImports: []glide.yaml: package: glide_demo6 import: - package: github.com/mattn/go-adodb
從lock中可以看到,確實將所有的依賴包都下載了。
3.3 下載制定版本號碼的包
command: glide get github.com/go-sql-driver/mysql#v1.2glide.yaml: package: glide_demo import: - package: github.com/go-sql-driver/mysql version: v1.2
3.4 團隊開發
在團隊開始時,需要將 glide.yaml 和 glide.lock 進資料列版本設定,vendor 忽略掉。
類比下團隊開發的流程
A同學:初始化項目,並提交了源碼,其中glide.yaml 和 glide.lock的內容如下
glide.yaml: package: glide_demo6 import: - package: github.com/mattn/go-adodb - package: github.com/go-ole/go-ole
glide.lock: hash: 18e3b9c2f5c11f3268b22ebdbea09636c5cae28e78f0011578f455c485e9d214 updated: 2016-05-18T23:43:15.8217224+08:00 imports: - name: github.com/go-ole/go-ole version: 572eabb84c424e76a0d39d31510dd7dfd62f70b2 - name: github.com/mattn/go-adodb version: 452cccbbcfb7906b3cbc512992557c1083e1011b devImports: []
B同學:拉去項目,執行 glide install,會自動下載對應的包
四、總結
使用glide的好處是,每個項目都採用各自獨立的包,而且可以很好的控制包的版本,這在團隊開發中尤其重要。