ホームページ  >  記事  >  バックエンド開発  >  golangの依存関係管理modについて詳しく解説

golangの依存関係管理modについて詳しく解説

藏色散人
藏色散人転載
2021-04-08 16:03:502300ブラウズ

以下は、golang の依存関係管理 MOD を皆さんに紹介する golang チュートリアル コラムです。困っている友人のお役に立てれば幸いです。

golangの依存関係管理modについて詳しく解説

golang 依存関係管理 mod

go は依存関係管理の問題を長い間検討しており、組み込みの go を備えています。 get コマンドを使用すると、対応する依存関係を直接取得でき、非常に便利ですが、大きな欠陥があります。バージョンの保守と管理がなく、一貫性のないバージョンはさまざまな互換性の問題を引き起こす可能性があるため、多くのサードパーティの依存関係管理が必要です。 go 1.11 では、公式はついに独自の依存関係管理ツール mod をリリースし、それをgo バージョン。go mod 使いやすく、強力で、以前のほとんどのサードパーティ ツールと自動的に互換性があります。多数の優れたオープン ソース ライブラリが go mod に切り替えられました。世界を統一する可能性を秘めていますGO111MODULE最大の変更の 1 つは、golang プロジェクトがついに

$GOPATH

ディレクトリに依存しなくなったことです。以前のプロジェクトでは、

import

メカニズムの問題で、すべてのプロジェクトは $GOPATH/src ディレクトリにありました。大きな問題はありませんが、常に奇妙に感じます。go 1.11 では最終的にこの問題を調整し、コードを移動しました$GOPATH より 以前の R&D モードとの互換性を保つために、$GOPATH の下に配置し、GO111MODULE 環境変数を通じて制御することが引き続きサポートされています##GO111MODULE=off : MOD をオフにし、

vendor
    ディレクトリと
  • $GOPATH パス で依存関係を探します。 GO111MODULE=on: go.mod
  • にのみ基づいて MOD をオンにします。 依存関係をダウンロードして見つけます
  • GO111MODULE=auto:デフォルト値、$GOPATH
  • 以外のパスにあり、
  • go が含まれています。 go project、新しいプロジェクトを作成するときにのみ実行する必要があります。go mod init の後、ライブラリが更新されるたびに、最初に対応するライブラリをコードにインポートするだけで済みます。を実行し、go mod tiny (
  • go mod download
手動ダウンロードも使用できます)

    ライブラリ バージョンの置き換え
  1. 手動で変更しますgo.mod
  2. ファイルの require フィールドを指定して、
  3. go mod tiny## を再実行します。 #<pre class="brush:php;toolbar:false">go mod init     # 在新的 go 项目中执行,自动分析依赖,创建 go.sum go mod tidy     # 自动分析依赖,并自动添加和删除依赖 go mod vendor   # 创建 vendor 目录,将依赖拷贝到当前的 vendor 文件夹下 go mod download # 手动下载依赖</pre>golang のバージョンには、## で始まる 3 桁のバージョン番号が使用されます。 #v。最初のものは、書籍のメジャー アップデートを示します。ライブラリの v2
  4. がリリースされたバージョンでは、
module my-module

に変更する必要があります。 module my-module/v2

、それ以外の場合は、ライブラリを導入するときに incompatibility サフィックス <pre class="brush:php;toolbar:false">require (     github.com/gin-gonic/gin v1.4.0 )</pre> GFW 問題の解決

いくつかの理由により、国内ネットワークは golang.org のライブラリにアクセスできません。幸いなことに、ほとんどのライブラリには github にミラーがあり、replace コマンドを使用してミラーをセットアップできます。ここでは私が見つけたライブラリをいくつか紹介します <pre class="brush:php;toolbar:false">require (     github.com/lestrrat-go/file-rotatelogs v2.2.0+incompatible )</pre> GO 1.12 以降では、新しい環境変数 GOPROXY がサポートされており、依存プロキシ アドレスの設定に使用されます。共有アドレスは 2 つあります: Communitygoproxy.io と Youpaiyun の goproxy.cn、個人的にテスト済みで使いやすい <pre class="brush:php;toolbar:false">replace (     cloud.google.com/go =&gt; github.com/googleapis/google-cloud-go v0.0.0-20190603211518-c8433c9aaceb     go.etcd.io/bbolt =&gt; github.com/etcd-io/bbolt v1.3.4-0.20191001164932-6e135e5d7e3d     go.uber.org/atomic =&gt; github.com/uber-go/atomic v1.4.1-0.20190731194737-ef0d20d85b01     go.uber.org/multierr =&gt; github.com/uber-go/multierr v1.2.0     go.uber.org/zap =&gt; github.com/uber-go/zap v1.10.1-0.20190926184545-d8445f34b4ae     golang.org/x/crypto =&gt; github.com/golang/crypto v0.0.0-20190605123033-f99c8df09eb5     golang.org/x/exp =&gt; github.com/golang/exp v0.0.0-20190510132918-efd6b22b2522     golang.org/x/image =&gt; github.com/golang/image v0.0.0-20190523035834-f03afa92d3ff     golang.org/x/lint =&gt; github.com/golang/lint v0.0.0-20190409202823-959b441ac422     golang.org/x/mobile =&gt; github.com/golang/mobile v0.0.0-20190607214518-6fa95d984e88     golang.org/x/net =&gt; github.com/golang/net v0.0.0-20190606173856-1492cefac77f     golang.org/x/oauth2 =&gt; github.com/golang/oauth2 v0.0.0-20190604053449-0f29369cfe45     golang.org/x/sync =&gt; github.com/golang/sync v0.0.0-20190423024810-112230192c58     golang.org/x/sys =&gt; github.com/golang/sys v0.0.0-20190602015325-4c4f7f33c9ed     golang.org/x/text =&gt; github.com/golang/text v0.3.2     golang.org/x/time =&gt; github.com/golang/time v0.0.0-20190308202827-9d24e82272b4     golang.org/x/tools =&gt; github.com/golang/tools v0.0.0-20190608022120-eacb66d2a7c3     google.golang.org/api =&gt; github.com/googleapis/google-api-go-client v0.6.0     google.golang.org/appengine =&gt; github.com/golang/appengine v1.6.1     google.golang.org/genproto =&gt; github.com/google/go-genproto v0.0.0-20190605220351-eb0b1bdb6ae6     google.golang.org/grpc =&gt; github.com/grpc/grpc-go v1.21.1 )</pre>キャッシュ

go mod は依存関係を更新した後にローカルにキャッシュします。キャッシュ パス

$GOPATH/pkg/mod

IDE サポート

golandMOD 構成を有効にする[Goland]→[設定] → [Go モジュール (vgo)] → [Go モジュールを有効にする (vgo)] → [OK]

MOD を有効にすると、goland は依存関係を自動的にチェックし、依存ライブラリを導入するために go.sum を自動的に更新します。通常の状況ではうまく動作しますが、場合によっては動作しないこともあります。手動で実行

go mod tiny

vscode

vscode は自動的に更新されないようです。手動で実行してください。

go mod tiny

有効になります。再起動後

#リンク

#公式 Web サイト: https://blog.golang.org/using-go-modules

Go モジュール: https://blog .csdn.net/ytd7777/article/details/86898187

goproxy.io: https://goproxy.io/

転載元を示してください

これへのリンク記事: https://tech.hatlonely.com/article/56

以上がgolangの依存関係管理modについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。