go依賴管理-govendor
Golang 官方並沒有推薦最佳的包管理方案。到了1.5版本時代,官方引入包管理的設計,加了 vendor 目錄來支持本地包管理依賴。官方 wiki 推薦了多種支持這種特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。
govendor該工具將項目依賴的外部包拷貝到項目下的 vendor 目錄下,並通過 vendor.json 文件來記錄依賴包的版本,方便用戶使用相對穩定的依賴。
對於 govendor 來說,依賴包主要有以下多種類型:
狀態 縮寫狀態 含義
+local l 本地包,即項目自身的包組織
+external e 外部包,即被 $GOPATH 管理,但不在 vendor 目錄下
+vendor v 已被 govendor 管理,即在 vendor 目錄下
+std s 標準庫中的包
+unused u 未使用的包,即包在 vendor 目錄下,但項目並沒有用到
+missing m 代碼引用了依賴包,但該包並沒有找到
+program p 主程序包,意味着可以編譯爲執行文件
+outside 外部包和缺失的包
+all 所有的包
安裝
編譯一個govendor
go get -u github.com/kardianos/govendor
The project must be within a $GOPATH/src
Quick Start
設置你的工程
cd “my project in GOPATH”
govendor init
加入存在的 GOPATH 文件到vendor.
govendor add +external
查看你的vendor 列表
govendor list
Look at what is using a package
govendor list -v fmt
#指明獲取的版本
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55
govendor fetch golang.org/x/net/context@v1 # Get latest v1.. tag or branch.
govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named “v1”.
更新
govendor fetch golang.org/x/net/context
格式化
govendor fmt +local
構建
govendor install +local
測試
govendor test +local
3.3 Sub-commands
init 創建 vendor 文件夾和 vendor.json 文件
list 列出已經存在的依賴包
add 從 $GOPATH 中添加依賴包,會加到 vendor.json
update 從 $GOPATH 升級依賴包
remove 從 vendor 文件夾刪除依賴
status 列出本地丟失的、過期的和修改的package
fetch 從遠端庫增加新的,或者更新 vendor 文件中的依賴包
sync Pull packages into vendor folder from remote repository with revisions
migrate Move packages from a legacy tool to the vendor folder with metadata.
get 類似 go get,但是會把依賴包拷貝到 vendor 目錄
license List discovered licenses for the given status or import paths.
shell Run a “shell” to make multiple sub-commands more efficient for large projects.
go tool commands that are wrapped:
+<status>
package selection may be used with them
fmt, build, install, clean, test, vet, generate, tool
http://www.wuecho.com/