Go モジュールのサブモジュールとのモジュールの競合を解決するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-30 20:47:30
オリジナル
920 人が閲覧しました

How to Resolve Module Conflicts with Go Module Sub-Modules?

モジュールとサブモジュールの競合を解決する

Go モジュールの依存関係で競合が発生すると、特にトップレベル モジュールとそのモジュールの場合にイライラすることがあります。サブモジュールは異なるバージョンとして個別にインポートされます。この問題は、1 つ以上の依存関係がモジュールまたはサブモジュールの Go モジュール以前のバージョンを参照し、その結果、モジュールとサブモジュールの両方の依存関係が取得される場合に発生します。

競合の特定

この例では、モジュールの依存関係グラフは次のようになります。

├── main module (github.com/test-org/test-repo)
│   ├── github.com/foo/bar v1.0.0
│   └── github.com/raz/mataz v1.0.0
└─────github.com/shared/dependency
      ├── submodule: github.com/shared/dependency/api
      └── two downloaded versions:
          - v1.1.0 (module-less version)
          - v1.2.0 (Go module version)
ログイン後にコピー

競合への対処

この中のあいまいなインポート エラーこの場合は、github.com/shared/dependency/api へのモジュール参照と github.com/shared/dependency リポジトリのブラック ボックス インポートとの間の競合を示します。これを解決するには、モジュールとサブモジュールの一貫したバージョンを適用する必要があります。

解決策: replace ディレクティブを使用する

解決策は、replace ディレクティブを追加することです。メインモジュールの go.mod ファイル内。このディレクティブは、サブモジュールへのすべての参照に特定のバージョンの使用を強制します。この例では、参照で Go モジュール対応バージョンである github.com/shared/dependency v1.2.0 を強制的に使用します。

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)
ログイン後にコピー

注: このソリューションは以下を前提としています。すべての依存関係では、github.com/shared/dependency の Go モジュール対応バージョンを使用する必要があります。そうでない場合は、参照されている依存関係のバージョンを変更するか、Glide などの依存関係管理ツールを使用するなど、他の解決策が必要になる可能性があります。

以上がGo モジュールのサブモジュールとのモジュールの競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート