解決的問題
將源碼拷貝到當前工程的vendor目錄下,這樣打包當前的工程代碼到任意機器的$GOPATH/src下都可以通過編譯。
govendor
1、安裝
go get -u -v github.com/kardianos/govendor
2、命令:govendor init
創建vendor目錄,目錄中會存在vendor.json文件,如下圖
3、命令govendor add +external
生成依賴包
4、更新vendor的包命令govendor update +vendor
- 具體來看,這些包可能的類型如下:
狀態 | 縮寫狀態 | 含義 |
---|---|---|
+local | l | 本地包,即項目自身的包組織 |
+external | e | 外部包,即被 $GOPATH 管理,但不在 vendor 目錄下 |
+vendor | v | 已被 govendor 管理,即在 vendor 目錄下 |
+std | s | 標准庫中的包 |
+unused | u | 未使用的包,即包在 vendor 目錄下,但項目並沒有用到 |
+missing | m | 代碼引用了依賴包,但該包並沒有找到 |
+program | p | 主程序包,意味着可以編譯為執行文件 |
+outside | 外部包和缺失的包 | |
+all | 所有的包 |
- 通過指定包類型,可以過濾僅對指定包進行操作。
命令 | 功能 |
---|---|
init |
初始化 vendor 目錄 |
list |
列出所有的依賴包 |
add |
添加包到 vendor 目錄,如 govendor add +external 添加所有外部包 |
add PKG_PATH |
添加指定的依賴包到 vendor 目錄 |
update |
從 $GOPATH 更新依賴包到 vendor 目錄 |
remove |
從 vendor 管理中刪除依賴 |
status |
列出所有缺失、過期和修改過的包 |
fetch |
添加或更新包到本地 vendor 目錄 |
sync |
本地存在 vendor.json 時候拉去依賴包,匹配所記錄的版本 |
get |
類似 go get 目錄,拉取依賴包到 vendor 目錄 |