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
331 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!

source:php.cn
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