Maison >développement back-end >Golang >Comment importer un espace de travail en tant que dépendance dans un autre référentiel go ?

Comment importer un espace de travail en tant que dépendance dans un autre référentiel go ?

王林
王林avant
2024-02-09 08:33:20634parcourir

如何将工作区作为依赖项导入到另一个 go 存储库中?

l'éditeur php Yuzai est là pour partager avec vous une question sur le langage Go : "Comment importer l'espace de travail en tant que dépendance dans un autre référentiel Go ?" Parfois, nous pouvons avoir besoin d'importer un espace de travail en tant que dépendance dans un autre référentiel pour l'utiliser dans un projet. Dans cet article, je vais vous présenter en détail comment atteindre cet objectif pour vous aider à mieux gérer les dépendances de votre projet de langage Go.

Contenu de la question

J'ai un projet multi-espaces de travail, la structure est :

apps/go.mod
go.work

Ce projet contient un sous-module apps 及其 go.work Le fichier contient :

go 1.180
use (
./apps
)

J'ai un autre projet go (dépôt séparé) que je souhaite utiliser app子模块作为库导入,下面是go.mod :

module xxxx

go 1.18

require (
    github.com/zhaoyi0113/test-go-module v0.0.3 // indirect
)

J'ai alors le code suivant :

package main

import (
    "github.com/zhaoyi0113/test-go-module/apps/logger"
)

func main() {
    logger.test()
}

La compilation a échoué avec l'erreur suivante :

main.go:7:2: no required module provides package github.com/zhaoyi0113/test-go-module/apps/logger; to add it:
        go get github.com/zhaoyi0113/test-go-module/apps/logger

Comment importer des sous-modules à partir d'un projet multi-espaces de travail ?

Solution de contournement

Vous ne pouvez pas importer l'espace de travail.

La situation actuelle est la suivante :

github.com/zhaoyi0113/test-go-module/apps 有一个模块 声明其模块路径github.com/zhaoyi0113/test-go-module。该模块不可用,因为该模块的实际路径与声明的路径不匹配(请注意其中一个路径中缺少 /apps).

Le module

xxxx doit être dans le sous-répertoire github.com/zhaoyi0113/test-go-module,但在该路径下没有找到模块。它位于 apps, comme décrit dans le paragraphe précédent.

Il existe deux correctifs possibles selon l'endroit où vous souhaitez placer le module.

Si vous souhaitez conserver le go.mod importé dans le répertoire actuel, mettez à jour le chemin du module pour inclure apps :

Go.mod du module d'importation :

module github.com/zhaoyi0113/test-go-module/apps
go 1.19

go.mod pour importer des modules :

module xxxx
go 1.18
require (
    github.com/zhaoyi0113/test-go-module/apps v0.0.3 // indirect
)

La seconde est aussi l'option régulière Mettez simplement go.mod dans le répertoire racine du projet et placez le fichier go.work en dehors du projet. Pour implémenter cela, déplacez go.mod à la racine du projet (car il figurait dans le commit d'origine) et déplacez go.work ailleurs. Aucune modification n'est requise pour les modules importés.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer