ホームページ  >  記事  >  バックエンド開発  >  Go モジュールのトップレベルおよびサブモジュールのインポートとの依存関係の競合を解決するにはどうすればよいですか?

Go モジュールのトップレベルおよびサブモジュールのインポートとの依存関係の競合を解決するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 22:04:30229ブラウズ

How to Resolve Go Module Dependency Conflicts with Top-Level and Sub-module Imports?

トップレベルおよびサブモジュールのインポートとの Go モジュールの依存関係の競合を解決する

この問題は、トップレベルのモジュールと次のいずれかが発生した場合に発生します。そのサブモジュールは異なるバージョンとして個別にインポートされるため、依存関係の競合が発生します。プロジェクトに github.com/foo/bar と github.com/raz/mataz という 2 つの依存関係があるシナリオを考えてみましょう。 go mod download を実行すると、サブモジュールが存在するため、github.com/shared/dependency の 2 つの異なるバージョンがダウンロードされます。

ダウンロードしたモジュールを検査すると、複数のダウンロードされたバージョンが明らかになります:

  • ${GOPATH}/pkg/mod/github.com/shared/[email protected]: サブモジュールを含むリポジトリのコンテンツ全体が含まれます。
  • ${GOPATH}/pkg/mod /github.com/shared/dependency/[email protected]: API サブモジュールのみが含まれています。

この不一致により、github.com/ をインポートしようとすると、あいまいなインポート エラーが発生します。共有/依存関係/API。両方のディレクトリに競合するバージョンが存在するため、Go ツールはどちらのバージョンを使用するかを決定できません。

解決策: 依存関係バージョンのアップグレード

この問題の根本原因は、多くの場合、次のとおりです。競合する依存関係内の pre-go モジュールのバージョン管理に関連します。次の行を go.mod ファイルに追加すると、競合する依存関係で go-module 対応バージョンの使用が強制されます:

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)

これにより、事実上、github.com/shared/dependency への参照が go と互換性のあるバージョンを使用するように強制されます。モジュールを使用して、依存関係の競合の問題を解決します。共有依存関係へのすべての参照が go-module 対応バージョンに転送されるため、このソリューションは機能することに注意することが重要です。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。