Go語言go modure的使用以及第三方包的依賴管理

Go語言go modure的使用以及第三方包的依賴管理

Go modure介紹

go modules 是 golang 1.11 新加的特性,主要用來進行項目包的管理,在此之前其實也有其他工具,但是都有一定的不足,想了解的可以自行去查一下,本文主要介紹go mod的使用
(本文假設go相關的東西已經安裝好,包括代理GOPROXY=https://goproxy.cn,direct)

環境

通過go env可以查看自己go相關的配置,其中GO111MODULE=“on”表示使用go mod模式,此模式下不會使用$GOPATH,如果GO111MODULE!=“on”,可以通過go env -w GO111MODULE=on進行設置。

使用

此時新建一個文件夾作爲本次介紹的試驗項目,隨便放在哪都可,然後在目錄下執行go mod init projectname : projectname就是我們這個模塊名,這時我們的目錄下就會有一個go.mod文件。

然後再到此目錄下新建一個main.go文件,用來做第三包的管理測試,我所在的環境是CentOS,mac和其他linux環境應該相差無幾。

然後在文件里加入如下代碼:

package main

import (
	"log"
	"os"
	"github.com/goinaction/code/chapter2/sample/search"
)

func init() {
	log.SetOutput(os.Stdout)
}

func main() {
	search.Run("prisident")
}

其中 “github.com/goinaction/code/chapter2/sample/search” 是Go語言實戰中的項目路徑,讀者可以在這裏改爲其他第三方庫均可。
在這裏,很神奇的事情就發生了,此時mod組件就會自動把這個第三方包的代碼下載到$GOPATH/pkg/mod/github.com路徑下了,這就是使用go mod的方便之處,而且,go.mod文件內容會變爲:

module firstgo

go 1.13

require github.com/goinaction/code v0.0.0-20171020164608-49fc99e6affb // indirect

這就很方便了,而且go mod 還提供很多命令方便我們進行第三方包的管理:

命令 說明
download download modules to local cache(下載依賴包)
edit edit go.mod from tools or scripts(編輯go.mod)
graph print module requirement graph (打印模塊依賴圖)
verify initialize new module in current directory(在當前目錄初始化mod)
tidy add missing and remove unused modules(拉取缺少的模塊,移除不用的模塊)
vendor make vendored copy of dependencies(將依賴複製到vendor下)
verify verify dependencies have expected content (驗證依賴是否正確)
why xplain why packages or modules are needed(解釋爲什麼需要依賴)

具體的使用讀者可以自行進行測試

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