天天看點

Golang包管理工具glide簡介

Golang包管理工具glide簡介

前言

Golang是一個十分有趣,簡潔而有力的開發語言,用來開發并發/并行程式是一件很愉快的事情。在這裡我感受到了其中一些好處:

  • 沒有少了許多代碼格式風格的争論,強制統一的風格多好;
  • 編譯速度超快,再也不用等待許久,才能編譯完工程(測試驅動開發自然更爽);
  • 也不會出現同一個項目組中的人,在使用同一個語言的不同子集。但這種情況不論是在C#還是在Java的世界裡,都還是普遍存在的;
  • 輕松跨平台(當然Java做得不錯,C#/.net還是努力中...)
  • 這是一門非常簡潔、簡單、清晰的程式設計語言(關鍵字好少啊)
  • 包依賴處理得很有趣;
  • 錯誤處理機制很有趣,個人覺得比C#/Java的異常處理機制更友善,也更合理些;
  • 對面向對象程式設計很有趣,非侵入性的接口實作方式,太贊了。
  • 用組合而不是繼承

    有些東西沒有,比如模闆,這個東西有一大片争論,官方也有明确的回應。是啊,為什麼一定要模闆呢?非要不可嗎?這麼關鍵嗎?如果非要不可,是不是go并不是這個環境下的最佳選擇呢。

還有一個問題的是包管理,并沒有官方最佳管理方案,在go的世界裡存在大量的自制解決方案。go語言的包是沒有中央庫統一管理的,通過使用go get指令從遠端代碼庫(github.com,goolge code 等)拉取,直接跳過中央版本庫的限制,讓代碼的拉取直接基于源代碼版本控制庫,開發者間的協同直接依賴于源代碼的版本控制。直接去除了庫版本的概念。沒有明顯的包版本辨別,感覺還是有點不适應,官方的建議是把外部依賴的代碼全部複制到自己可控的源代碼庫中,進行同意管理。進而做到對依賴包的可控管理。

1.5版本的vendor目錄特性後,官方wiki推薦了多種支援這種特性的包管理工具如:Godep、gv、gvt、glide、Govendor等。我比較喜歡glide。此外,作為程式員FQ似乎是必備技能,翻得一手好牆,才能跟得上步伐,才有收起刀落的手感,怎一個爽字了得。别問我怎麼FQ,找度娘,她知道。

glide

Golang包管理工具glide簡介

glide是Go的包管理工具。支援語義化版本,支援Git、Svn等,支援Go工具鍊,支援vendor目錄,支援從Godep、GB、GPM、Gom倒入,支援私有的Repos和Forks。

使用glide管理的工程目錄結構如下:

- $GOPATH/src/myProject (Your project)
  |
  |-- glide.yaml
  |
  |-- glide.lock
  |
  |-- main.go (Your main go code can live here)
  |
  |-- mySubpackage (You can create your own subpackages, too)
  |    |
  |    |-- foo.go
  |
  |-- vendor
       |-- github.com
            |
            |-- Masterminds
                  |
                  |-- ... etc.
           

安裝

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

初始化

$ glide init
           

初始化,glide掃描代碼目錄,建立一個glide.yaml檔案,檔案中記錄了所有的依賴

編輯配置

$ edit glide.yaml
           

通過修改glide.yaml檔案,可以添加版本資訊等,這一步不是必須的。

解析下載下傳包依賴

$ glide update
           

或者

$ glide up
           

下載下傳和更新glide.yaml中列出的所有依賴包,并将它們放到vendor目錄下。glide同時也遞歸擷取依賴包需要的任何依賴項包括配置檔案中定義的依賴項目。glide遞歸擷取依賴,可以識别Glide、Godep、gb、gom和GPM管理的項目。

當依賴被制定到特定的版本時,名為glide.lock的檔案會被建立或者更新。例如,如果在glide.yaml中一個版本被指定在一個範圍内(如:^1.2.3),那麼glide将在glide.yaml中設定一個特定送出ID(commit id)。如此,将允許重複安裝(見 glide install指令)。

從擷取的依賴包中移除嵌套的vendor/目錄可以使用-v标記。

安裝特定版本

當需要從glide.lock檔案中安裝制定版本的包是,可以使用install指令:

glide install
           

該指令将會讀取glide.lock檔案,當glide.lock檔案和glide.yaml不同步時,如glide.yaml發生改變,glide将會提供一個警告。運作glide up指令更新依賴樹時,将會重建glide.lock檔案。

檢視glide.yaml中依賴名稱

$ glide name
           

檢視依賴清單

$ glide list
           

檢視幫助

$ glide help
           

參看glide版本資訊

$ glide --version
           

作者:墨梅

出處:http://www.cnblogs.com/xiwang/

歡迎任何形式的轉載,但請務必注明出處。