GOPATH構模組化式
GOPATH預設路徑是
$HOME/go
。
GOPATH構模組化式下,編譯器會在GOPATH路徑下搜尋第三方子產品,不關心第三方包版本。為了可重構,引入了vendor機制。
Go Module構模組化式(推薦)
通過環境變量
GO111MODULE
設定為
on
打開Go Module構模組化式(Go 1.11版本引入此模式)。
建立
Go Module
,需要三步:
1、執行
go mod init
建立
go.mod
檔案,初始化項目。
2、執行
go mod tidy
指令自動更新目前module的依賴資訊。
3、執行
go build
,建構module。
Go Module采用語義導入版本 (Semantic Import Versioning),以及和其他主流語言不同的最小版本選擇 (Minimal Version Selection) 等機制。
添加依賴
go get github.com/google/uuid
執行指令會下載下傳依賴到本地module緩存裡,并在
go.mod
檔案的 require 段中新增一行依賴内容。
也可以用批量處理的方式
go mod tidy
,自動把源碼裡的依賴下載下傳下來。
更新 / 降級依賴的版本
降級:
$go get github.com/sirupsen/[email protected]
go: downloading github.com/sirupsen/logrus v1.7.0
go get: downgraded github.com/sirupsen/logrus v1.8.1 => v1.7.0
上面指令下載下傳了v1.7.0版本,并把依賴項從 v1.8.1 降至 v1.7.0版。
還可以用edit和tidy結合使用,實作同樣功能:
$go mod edit -require=github.com/sirupsen/[email protected]
$go mod tidy
go: downloading github.com/sirupsen/logrus v1.7.0
更新:
$go get github.com/sirupsen/[email protected]
go: downloading github.com/sirupsen/logrus v1.7.1
go get: upgraded github.com/sirupsen/logrus v1.7.0 => v1.7.1
添加主版本号大于 1 的依賴
$go get github.com/go-redis/redis/v7
go: downloading github.com/go-redis/redis/v7 v7.4.1
go: downloading github.com/go-redis/redis v6.15.9+incompatible
go get: added github.com/go-redis/redis/v7 v7.4.1
移除依賴
使用vendor
# 在vendor目錄下建立依賴包副本
# 用vendor/modules.txt記錄依賴包及版本
go mod vendor
# Go 1.14之後,預設也是vendor模式建構
go build -mod=vendor