govendor包管理工具的使用
-
govendor簡介
golang工程的依賴包經常使用go get命令來獲取,例如:
go get github.com/kardianos/govendor
,會將依賴包下載到GOPATH的路徑下。常用的依賴包管理工具有godep,govendor等,在Golang1.5之後,Go提供了GO15VENDOREXPERIMENT 環境變數(Go 1.6版本預設開啟該環境變數),用於將go build時的應用路徑搜尋調整成為 當前專案目錄/vendor 目錄方式。通過這種形式,我們可以實現類似於 godep 方式的專案依賴管理。
2.安裝與使用
2.1. 安裝
go get -u -v github.com/kardianos/govendor
2.2. 使用
進入到專案目錄
cd /home/gopath/src/app
初始化vendor目錄
govendor init
檢視vendor目錄
[root@CC54425A vendor]#ls
vendor.json
將GOPATH中本工程使用到的依賴包自動移動到vendor目錄中
說明:如果本地GOPATH沒有依賴包,先go get相應的依賴包
govendor add +external
或使用縮寫:
govendor add +e
現在看vendor.json 已經有依耐了
Go 1.6以上版本預設開啟 GO15VENDOREXPERIMENT 環境變數,可忽略該步驟。
通過設定環境變數 GO15VENDOREXPERIMENT=1 使用vendor資料夾構建檔案。
可以選擇 export GO15VENDOREXPERIMENT=1 或 GO15VENDOREXPERIMENT=1 go build 執行編譯
export GO15VENDOREXPERIMENT=1
2.3. 說明
govendor只是用來管理專案的依賴包,如果GOPATH中本身沒有專案的依賴包,則需要通過go get先下載到GOPATH中,再通過govendor add +external拷貝到vendor目錄中。Go 1.6以上版本預設開啟GO15VENDOREXPERIMENT環境變數。
2.4 git版本管理
和pakeage.json同樣, 我們需要將這個vendor.json新增到GIT, 但忽略vendor下的其他檔案.
.gitignore
/vendor/*
!/vendor/vendor.json
2.5 拉取依賴到vendor
其他人可以使用vendor.json重新安裝依賴包到vendor
govendor sync
2.6 使用vendor
注意vendor所在的目錄一定要在第一個GOPAHT下
- The project must be within a $GOPATH/src.
- If using go1.5, ensure you set GO15VENDOREXPERIMENT=1.
2.7 Sub-commands
init建立 vendor 資料夾和 vendor.json 檔案 list列出已經存在的依賴包 add從 $GOPATH 中新增依賴包,會加到 vendor.json update從 $GOPATH 升級依賴包 remove從 vendor 資料夾刪除依賴 status列出本地丟失的、過期的和修改的package fetch從遠端庫增加新的,或者更新 vendor 檔案中的依賴包 syncPull packages into vendor folder from remote repository with revisions migrateMove packages from a legacy tool to the vendor folder with metadata. get類似 go get,但是會把依賴包拷貝到 vendor 目錄 licenseList discovered licenses for the given status or import paths. shellRun a "shell" to make multiple sub-commands more efficient for large projects.