golang 依賴管理

依賴管理是一個語言很是重要的特性,很大程度上決定着一個語言的流行程度,流行的語言大多都有很是成熟的依賴管理工具,java 的 maven 和 gradle,javascript 的 npm,python 的 pip,這些工具極大地下降了咱們使用第三方庫的成本,提升了生產效率,而 c++ 比較奇葩,並無這樣統一的依賴管理工具,大公司好一點,有專門的團隊去作這樣的工具解決依賴的問題,小公司就只能本身把源碼拉下來,放到固定的目錄,而後編譯成二進制,運氣很差的話,還要本身解決各類兼容性的問題,若是有版本更新,這個過程還得重複一遍,第三方庫的使用和維護成本之高,讓人簡直就想放棄……javascript

Golang 是自帶依賴管理工具的,直接 go get <packages> 就能夠把依賴拉下來,可是這種方式有個缺陷,沒有版本控制,你每次拉下來的 package 都是 master 分支上的版本,這樣是很危險的,源代碼更新可能會有一些對外接口上面的調整,這些調整頗有可能就致使你的程序編譯通不過,而更致命的是,新的代碼引入了一些新的 bug 或者接口語義上的變化會致使你的程序崩潰,因此早期的 gopher 開發了另外一個依賴管理工具 godep解決了版本管理的問題,最近,golang 官方也在開發一個新的依賴管理工具 dep,但今天我給你們推薦的是 glide 這款工具,和其餘工具相比呢,這款工具支持更多的特性,包括支持依賴的自動分析,指定版本範圍,依賴清理等等,並且使用起來也比較簡單。這裏有一些工具的對比:https://github.com/Mastermind...html

下面我給你們簡單介紹一下 glide 在實際項目中的使用java

glide使用

安裝

Linuxpython

curl https://glide.sh/get | sh

Macc++

brew install glide

初始化

glide init

這個命令會自動分析你代碼裏面的依賴,而後建立一個 glide.yaml 來描述你當前項目的依賴,生成的這個文件是能夠手動編輯的,能夠手動修改一些版本之類的信息git

提醒一下,這個操做必須在 $GOPATH/src/ 的子目錄下面,這個和 golang 自己的包管理機制有關,若是沒有設置 $GOPATH,記得設置一下 export GOPATH=<directory>github

依賴下載

glide update

這個命令會下載 glide.yaml 裏面的依賴庫,而且一樣會分析並下載依賴庫依賴的其餘第三方庫,下載的依賴會放到與 glide.yaml 同級的 vendor 目錄,同時還會生成一個 glide.lock 文件,這個文件裏面描述了當前依賴的版本信息,不要手工編輯這個文件golang

若是你在中國,這個步驟裏面可能會碰到有些 gopkg 的庫拉不下來,也不知道爲啥要把這個也禁了……若是你碰到這個問題,你能夠手動把這些庫下載到 ${GOROOT}/src/golang.org/x 下面npm

git clone https://github.com/golang/crypto.git
git clone https://github.com/golang/sys.git
git clone https://github.com/golang/sync.git
git clone https://github.com/golang/text.git
git clone https://github.com/golang/net.git

添加依賴

glide get --all-dependencies github.com/foo/bar

也能夠指定版本curl

glide get --all-dependencies github.com/foo/bar#^1.2.3

除了 github 上的依賴,也能夠是其餘的平臺,好比 gitee,或者本身公司搭建的 gitlab,只要有權限就能夠,還有一點須要注意,版本必須是三位數字的版本號,不然可能識別不了

安裝依賴

glide install

這個命令是在一個已經使用 glide 管理依賴的項目裏,須要在新環境下從新安裝依賴使用的,這個命令會按照 glide.lock 的信息,把全部的依賴拉取到本地,和 glide update 不一樣的是,glide update 會來去最新的版本,而且會修改 glide.lock,而 glide install 只下載以前的依賴

參考連接

glide github: https://github.com/Mastermind...
glide 官網: https://glide.sh/
go依賴包管理工具對比: https://ieevee.com/tech/2017/...

轉載請註明出處
本文連接: http://hatlonely.github.io/20...
相關文章
相關標籤/搜索