golang 依賴管理

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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

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

下面我給大家簡單介紹一下 glide 在實際項目中的使用

glide使用

安裝

Linux

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

Mac

brew install glide

初始化

glide init

這個命令會自動分析你代碼裡面的依賴,然後建立一個 glide.yaml 來描述你當前項目的依賴,產生的這個檔案是可以手動編輯的,可以手動修改一些版本之類的資訊

提醒一下,這個操作必須在 $GOPATH/src/ 的子目錄下面,這個和 golang 本身的包管理機制有關,如果沒有設定 $GOPATH,記得設定一下 export GOPATH=<directory>

依賴下載

glide update

這個命令會下載 glide.yaml 裡面的依賴庫,並且同樣會分析並下載依賴庫依賴的其他第三方庫,下載的依賴會放到與 glide.yaml 同級的 vendor 目錄,同時還會產生一個 glide.lock 檔案,這個檔案裡面描述了當前依賴的版本資訊,不要手工編輯這個檔案

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

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

添加依賴

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

也可以指定版本

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...
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.