首先更新go語言版本至1.13以上,配置好相關常量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
linux系統下進入目标項目目錄,執行
go mod init
能夠自動生成一個空的go.mod檔案,說他是空的是因為此時該檔案中不會标記任何包依賴
然後執行
go mod tidy
此指令會自動檢索項目中使用的依賴,自動下載下傳能夠下載下傳的那些依賴包,并記錄在go.mod以及go.sum中
指令執行完畢可以檢視go.mod,會發現已經自動幫我們加上了require(當然啦前提是你的項目有依賴包的話)
如果項目中有部份依賴是本地别的項目,則執行該指令時會報錯,會給我們指出是哪些依賴找不到
推薦趁此機會理一理項目中使用的依賴,将不必要的(如官方就有的)或是引入了兩個相同功能的(不同檔案相同功能引用不同的包)依賴進行清理
之後按照指令列出的找不到的依賴,一個一個确認他們在本地的相對路徑,并寫入go.mod中,格式如下
replace navi/kstgo => ../kstgo
replace 在項目中import的路徑 => 本地項目的相對路徑
以此法将所有依賴的本地項目全部引入,可執行多次 go mod tidy 來檢查是否已經能夠找到所有的包,如果沒報錯則可嘗試進行 go build
在引入本地項目的過程中,需要被依賴的本地項目也有go.mod檔案,即也需要mod化
個人感覺其實go.mod就相當于package.json,go.sum就相當于package-lock.json,go mod download就相當于npm install
附部分相關指令
指令 | 效果 |
---|---|
go mod init | 在項目中生成go.mod檔案 |
go mod tidy | 檢索項目中使用的依賴并加入到go.mod檔案中 |
go get -u | 更新現有的依賴 |
go mod download | 下載下傳go.mod檔案中指明的所有依賴 |
go mod edit | 修改go.mod檔案,直接vim應該也一樣 |
go mod vendor | 導出現有的所有依賴 |
go mod graph | 檢視現有的依賴結構【看不懂,感覺就是列印了go.sum |
go mod verify | 校驗一個子產品是否被篡改過 |
附一個完整的go.mod檔案内容範例
module navi/kvp-mps
go 1.13
require (
baliance.com/gooxml v1.0.1
github.com/astaxie/beego v1.12.0
github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0 // indirect
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/go-redis/redis v6.15.6+incompatible
github.com/go-sql-driver/mysql v1.4.1
github.com/golang/protobuf v1.3.2
github.com/jinzhu/gorm v1.9.11
github.com/lib/pq v1.2.0 // indirect
github.com/onsi/ginkgo v1.10.2 // indirect
github.com/onsi/gomega v1.7.0 // indirect
golang.org/x/text v0.3.2
navi/kstgo v0.0.0-00010101000000-000000000000
navi/kvp-soap v0.0.0-00010101000000-000000000000
navi/kvp-tiny v0.0.0-00010101000000-000000000000
navi/navi-go-log v0.0.0-00010101000000-000000000000
)
replace (
navi/kstgo => ../kstgo
navi/kvp-soap => ../kvp-soap
navi/kvp-tiny => ../kvp-tiny
navi/navi-go-log => ../navi-go-log
)