go mod 幾個常用命令

go mod 生成 vendor

go mod可以使項目從GOPATH的強制依賴中獨立出來,也就是說你的項目依賴不再需要放在在GOPATH下面了,每個工程的依賴包、版本可由當前工程獨立管理!

 

  • GO111MODULE
  • GO111MODULE有三個值:off, on和auto(默認值)。
  • GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。
  • GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。
  • GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啓用module功能。這種情況下可以分爲兩種情形:

當前目錄在GOPATH/src之外且該目錄包含go.mod文件
當前文件在包含go.mod文件的目錄下面。

mod操作記錄

1

2

3

export GO111MODULE=on

 

go mod init github.com/mutex73/ga

 

go.mod如何在項目中使用?
1.首先我們要在GOPATH/src 目錄之外新建工程,或將老工程copy到GOPATH/src 目錄之外。

PS:go.mod文件一旦創建後,它的內容將會被go toolchain全面掌控。go toolchain會在各類命令執行時,比如go get、go build、go mod等修改和維護go.mod文件。

go.mod 提供了module, require、replace和exclude四個命令

module語句指定包的名字(路徑)
require語句指定的依賴項模塊
replace語句可以替換依賴項模塊
exclude語句可以忽略依賴項模塊
 

  

1

2

3

go mod init + 模塊名稱 初始化模塊

 

go mod init hello

  

運行完之後,會在當前目錄下生成一個go.mod文件,這是一個關鍵文件,之後的包的管理都是通過這個文件管理。

官方說明:除了go.mod之外,go命令還維護一個名爲go.sum的文件,其中包含特定模塊版本內容的預期加密哈希 
go命令使用go.sum文件確保這些模塊的未來下載檢索與第一次下載相同的位,以確保項目所依賴的模塊不會出現意外更改,無論是出於惡意、意外還是其他原因。 go.mod和go.sum都應檢入版本控制。 
go.sum 不需要手工維護,所以可以不用太關注。

注意:子目錄裏是不需要init的,所有的子目錄裏的依賴都會組織在根目錄的go.mod文件裏

 

export GO111MODULE=on

1、go mod init newapp

可以手動增加依賴go.uber.org/atomic v1.4.0或者讓go自動發現和維護,下面build中會自動發現依賴包

2、go build main.go

vendor_test.go文件中增加了import "go.uber.org/zap"的語句,IDE提示報錯,執行build後依賴包記錄在go.mod中

1

 

 

 

3、go mod download

依賴包會自動下載到$GOPATH/pkg/mod,多個項目可以共享緩存的mod

 

 

4、go mod vendor

從mod中拷貝到項目的vendor目錄下,這樣IDE就可以識別了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章