モジュールとサブモジュールの競合を解決する
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 サイトの他の関連記事を参照してください。