Maison > développement back-end > Golang > Comment résoudre les conflits de dépendance du module Go avec les importations de niveau supérieur et de sous-module ?

Comment résoudre les conflits de dépendance du module Go avec les importations de niveau supérieur et de sous-module ?

Barbara Streisand
Libérer: 2024-11-03 22:04:30
original
399 Les gens l'ont consulté

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

Résoudre les conflits de dépendance du module Go avec les importations de niveau supérieur et de sous-module

Ce problème survient lorsqu'un module de niveau supérieur et l'un des ses sous-modules sont importés séparément sous différentes versions, conduisant à des dépendances conflictuelles. Considérez un scénario dans lequel votre projet a deux dépendances, github.com/foo/bar et github.com/raz/mataz. Lors de l'exécution du téléchargement du mod go, deux versions différentes de github.com/shared/dependency sont téléchargées en raison de la présence de sous-modules.

L'inspection des modules téléchargés révèle plusieurs versions téléchargées :

  • ${GOPATH}/pkg/mod/github.com/shared/[email protected] : contient l'intégralité du contenu du référentiel, y compris les sous-modules.
  • ${GOPATH}/pkg/mod /github.com/shared/dependency/[email protected] : contient uniquement le sous-module API.

Cette incompatibilité entraîne une erreur d'importation ambiguë lors de la tentative d'importation de github.com/ partagé/dépendance/api. L'outil go ne peut pas déterminer quelle version utiliser en raison des versions conflictuelles présentes dans les deux répertoires.

Solution : mise à niveau des versions de dépendance

La cause première de ce problème est souvent liés à la gestion des versions des modules préalables au sein des dépendances en conflit. L'ajout de la ligne suivante à votre fichier go.mod force les dépendances en conflit à utiliser des versions compatibles avec go-module :

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)
Copier après la connexion

Cela force effectivement les références à github.com/shared/dependency à utiliser des versions compatibles avec go. modules, résolvant le problème de dépendance conflictuelle. Il est important de noter que cette solution fonctionne car toutes les références à la dépendance partagée sont dirigées vers des versions compatibles go-module.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal