大部分情況下大家下載 Go 項目都是使用go get命令,它除了會下載指定的項目代碼,還會去下載這個項目所依賴的所有項目。
但是有的時候我們的項目由于各種原因并不是通過go get下載的,是通過git clone下載的,這樣代碼下下來就沒有依賴包了,沒辦法編譯通過的。
go get -d -v ./...
-d標(biāo)志只下載代碼包,不執(zhí)行安裝命令;
-v打印詳細(xì)日志和調(diào)試日志。這里加上這個標(biāo)志會把每個下載的包都打印出來;
./...這個表示路徑,代表當(dāng)前目錄下所有的文件。
補(bǔ)充:goland自動下載所有依賴
項目中使用了go.mod時可以使用以下命令自動下載全部依賴
go get -d -v ./...
go mod tidy
補(bǔ)充:go mod 無法自動下載依賴包的問題
go 11以后啟用了go mod功能,用于管理依賴包。
當(dāng)執(zhí)行g(shù)o mod init生成go.mod文件之后,golang在運行、編譯項目的時候,都會檢查依賴并下載依賴包。
在啟動了go mod之后,通過go mod下載的依賴包,不在放在GOPATH/src中,而是放到GOPATH/pkg/mod中。
比如我當(dāng)前的GOPATH=/root/go,我在/root/goProjects/下新建了一個項目gProject1,并在項目下編寫了一些代碼,引用了一些第三方包:
echo $GO111MODULE
auto
mkdir /root/goProjects/gProject1
cd /root/goProjects/gProject1
vi main.go
cat main.go
package main import ( "log" "github.com/toolkits/smtp" ) func main() { //s := smtp.New("smtp.exmail.qq.com:25", "notify@a.com", "password") s := smtp.NewSMTP("smtp.exmail.qq.com:25", "notify@a.com", "password",false,false,false) log.Println(s.SendMail("notify@a.com", "ulric@b.com;rain@c.com", "這是subject", "這是body,font color=red>red/font>")) }
go mod init gProject1
go: creating new go.mod: module gProject1
-cat go.mod
module gProject1 go 1.12 yzc:gProj
go run main.go
如果此時報錯:
build command-line-arguments: cannot load github.com/toolkits/smtp: cannot find module providing package github.com/toolkits/smtp
原因是因為git版本較低,go get 無法通過git下載github.com/toolkits/smtp到指定路徑。
你可以手動執(zhí)行一下go get github.com/toolkits/smtp,發(fā)現(xiàn)會報一個類似這樣的錯誤:
# go get github.com/toolkits/smtp
go get github.com/toolkits/smtp: git ls-remote -q https://github.com/toolkits/smtp in /root/go/pkg/mod/cache/vcs/7028097e3b6cce3023c34b7ceae3657ef3f2bbb25dec9b4362813d1fadd80297: exit status 129:
usage: git ls-remote [--heads] [--tags] [-u exec> | --upload-pack exec>] repository> refs>...
就是git版本太低了,無法支撐go get運行g(shù)it時的參數(shù)調(diào)用。
macos:
brew upgrade git
centos6/7
sudo yum remove git*
centos6:
sudo yum -y install https://centos6.iuscommunity.org/ius-release.rpm
centos7:
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install git2u-all
再次執(zhí)行g(shù)o run main.go:
go: finding github.com/toolkits/smtp latest go: downloading github.com/toolkits/smtp v0.0.0-20190110072832-af41f29c3d89 go: extracting github.com/toolkits/smtp v0.0.0-20190110072832-af41f29c3d89 2019/07/27 16:15:52 535 Error: ��ʹ����Ȩ���¼�������뿴: http://service.mail.qq.com/cgi-bin/help?subtype=1id=28no=1001256
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
標(biāo)簽:蘭州 吐魯番 重慶 汕頭 雞西 梅河口 銅川 欽州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang 如何自動下載所有依賴包》,本文關(guān)鍵詞 golang,如何,自動,下載,所有,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。