Golang的模塊管理Module

Golang 1.11版本終於支持了官方的模塊依賴管理功能,1.11之前想要實現依賴管理只可以經過藉助第三方庫來實現,1.11之前的版本Golang項目必須依賴以GOPATH,從當前版本開始Golang項目能夠徹底脫離GOPATH目錄而工做,GOPATH將會逐漸被移除;git

Go Module

  Go mod的使用也比較簡單,Golang新增了環境變量GO11MODULE用於控制對Module的支持;
  GO111MODULE = off
  關閉Module的支持,從GOPATH、vendor目錄查找包
  GO111MODULE = auto
  根據當前目錄狀況啓用Module支持或禁用,只當項目不在GOPATH/src目錄當中,而且當前目錄中存在go.mod文件時啓用Module;
  GO111MODULE = on
  啓用Module支持;github

命令介紹

go mod download:下載模塊到本地緩存
go mod edit:編輯go.mod文件
go mod graph:輸出打印當前項目的依賴圖
go mod init:建立新模塊到當前目錄
go mod vendor:將依賴拷貝到vendor目錄下
go mod tidy:整理模塊,移除爲使用模塊,添加缺乏模塊
go mod verify:驗證模塊正確性
go mod why:查找依賴golang

經過Golang Module建立模塊

一、初始化模塊
  建立項目modtest目錄,進入modtest目錄:
  執行 go mod init modtest初始化模塊,能夠看到初始化完成後當前目錄下生成了一個go.mod文件,因爲時剛初始化模塊因此打開文件能夠看到文件中只有一行:
  module modtestredis

二、在當前模塊中引用其餘第三方模塊
  建立test.go文件緩存

package main

 import(
         "fmt"
         "github.com/go-redis/redis"
 )

 func main(){
    fmt.Println("引用第三方模塊 ",redis.Client{})
 }

  執行go mod tidy 下載依賴,執行go run、go build 一樣會下載依賴;測試

  執行完成後查看go.mod便可看到相關依賴信息,在GOPATH/pkg/mod目錄下能夠看獲得Golang module下來的所依賴的第三方包;
  此時的go.mod已經配置了模塊所依賴的第三方包,go.mod內容以下:ui

三、在當前模塊引用包代理

  在當前目錄下建立 submod包(目錄),進入submod目錄建立sub.go文件code

package submod

 func Name(){

 }

  在項目根目錄,修改test.go目錄引用submod包blog

package main

 import(
  "fmt"
  "github.com/go-redis/redis"
  "modtest/submod"
 )

 func main(){
  fmt.Println("測試 ",redis.Client{})
  fmt.Println("包引用 ",submod.Name)
 }

四、使用module代理
  因爲某些緣由,某些包不FQ時不能夠直接下得下來的,還好go mod提供了代理的設置,而且還提供了https://goproxy.io 代理服務,咱們能夠經過設置代理,下載golang.org/x/text等沒法直接下載的第三方包;

  set GOPROXY = https://goproxy.io

相關文章
相關標籤/搜索