亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

依賴管理和golang包

依賴管理和golang包

Go
泛舟湖上清波郎朗 2022-06-21 09:52:30
我們在受保護的網絡中運行 golang 代碼,我們希望 golang 依賴項(包)已經成為被克隆的 repo 的一部分。這意味著當 golang 代碼運行時,所需的一切都已經存在。我們希望這些依賴項成為 git repo 的一部分。我們不希望動態下載 golang 依賴項??雌饋韌ovendor是一種方法。Go 模塊似乎也提供了類似的功能。實現這些目標的最佳實踐是什么?
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

使用 go modules 是推薦的方法。您必須使用go mod vendor命令將模塊復制到開發環境中的供應商目錄(顯然需要首先下載包)。go mod vendor不會將軟件包下載到供應商目錄中,它會從您在開發環境中可能位于$GOPATH/pkg/mod或類似的東西中的先前下載的模塊中復制它們,并將其保存在您的供應商文件夾中,以便在生產中您不需要下載它們。然后,您將使用go build -mod vendor.

所以總結一下:

  1. 在您的代碼中導入您的包

  2. 獲取依賴進入$GOPATH/pkg/mod或類似路徑:(go get github.com/name/[email protected]此步驟實際上是可選的)

  3. 將包從復制$GOPATH/pkg/modvendorgo mod vendor

  4. 編譯代碼:go build -mod vendor


查看完整回答
反對 回復 2022-06-21
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

只是為了擴展您對問題的評論,是的,使用 go 模塊,但這仍然不能解決您的請求,您將需要使用模塊和 go modules 提供的供應商選項。然后您的所有依賴項將存儲在您的存儲庫內的供應商文件夾中,您簽入該文件夾,然后用戶只需簽出您的存儲庫并擁有所有依賴項。

還要查看 go env 變量GOFLAGS=-mod=vendor,您需要為 go 工具設置它來查看您的供應商與檢查網絡(我在我們的構建管道上設置了它)

有關該 env 變量的詳細說明,請參閱https://github.com/golang/go/issues/27227


查看完整回答
反對 回復 2022-06-21
  • 2 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號