Maison > développement back-end > Golang > le corps du texte

Explication détaillée du mod de gestion des dépendances Golang

藏色散人
Libérer: 2021-04-08 19:56:35
avant
2284 Les gens l'ont consulté

Ce qui suit est une introduction au mod de gestion des dépendances golang de la colonne tutoriel golang. J'espère que cela sera utile aux amis qui en ont besoin !

Explication détaillée du mod de gestion des dépendances Golang

mod de gestion des dépendances golang

go réfléchit depuis longtemps à la question de la gestion des dépendances. Il intègre la commande go get. et vous pouvez obtenir directement les dépendances correspondantes, c'est très pratique, mais il y a un énorme défaut : il n'y a pas de maintenance et de gestion des versions, et des versions incohérentes peuvent provoquer divers problèmes de compatibilité, c'est pourquoi de nombreux outils de gestion des dépendances tiers ont émergé, dep et glide sont les meilleurs d'entre eux, dans go 1.11, le responsable a finalement lancé son propre outil de gestion des dépendances mod et l'a intégré à la version go go mod est facile à utiliser, puissant et peut être automatiquement compatible avec. la plupart des outils tiers précédents. Un grand nombre d'excellentes bibliothèques open source sont toutes passées à go mod, ce qui a le potentiel d'unifier le monde

GO111MODULE

L'un des changements les plus importants est que les projets golang ne dépendent finalement plus du répertoire $GOPATH Avant En raison du problème du mécanisme import, tous les projets se trouvent dans le répertoire $GOPATH/src Bien qu'il n'y ait pas de gros problème, cela fait toujours bizarre. ajusté ce problème et changé le code de $GOPATH Afin d'être compatible avec le mode R&D précédent, il est toujours pris en charge pour être placé sous $GOPATH et contrôlé via la variable d'environnement GO111MODULE

  • GO111MODULE=off : Fermez le mod, recherchez le répertoire vendor et les dépendances sous le chemin $GOPATH
  • GO111MODULE=on : Activez le mod, téléchargez et recherchez les dépendances uniquement en fonction de go.mod
  • GO111MODULE=auto : valeur par défaut, dans les chemins non $GOPATH et inclure le Mod n'est activé que dans les go.mod projets

Commande principale

go mod init     # 在新的 go 项目中执行,自动分析依赖,创建 go.sum
go mod tidy     # 自动分析依赖,并自动添加和删除依赖
go mod vendor   # 创建 vendor 目录,将依赖拷贝到当前的 vendor 文件夹下
go mod download # 手动下载依赖
Copier après la connexion
  1. Pour un nouveau projet go, il vous suffit de l'exécuter lors de la création d'un nouveau projetgo mod init
  2. Chaque fois que la bibliothèque est mise à jour par la suite, il vous suffit d'abord d'importer la bibliothèque correspondante dans le code, puis d'exécuter go mod tidy (vous pouvez également le télécharger manuellement avec go mod download)

Modifiez la version de la bibliothèque

Modifiez manuellement le champ requis dans le fichier go.mod et réexécutez go mod tidy.

require (
    github.com/gin-gonic/gin v1.4.0
)
Copier après la connexion

La version de golang utilise un numéro de version à trois chiffres commençant par v, où le premier chiffre signifie qu'il y a Pour les mises à jour majeures du livre, lors de la publication d'une version v2+ de la bibliothèque, module my-module devrait être remplacé par module my-module/v2, sinon l'introduction de la bibliothèque doit ajouter le suffixe +incompatible

require (
    github.com/lestrrat-go/file-rotatelogs v2.2.0+incompatible
)
Copier après la connexion

pour résoudre le problème GFW

Pour certaines raisons, le Le réseau ne peut pas accéder aux bibliothèques sur golang.org. Heureusement, la plupart des bibliothèques ont des miroirs sur github. Vous pouvez utiliser la commande replace pour définir le miroir. Voici quelques bibliothèques que j'ai rencontrées

replace (
    cloud.google.com/go => github.com/googleapis/google-cloud-go v0.0.0-20190603211518-c8433c9aaceb
    go.etcd.io/bbolt => github.com/etcd-io/bbolt v1.3.4-0.20191001164932-6e135e5d7e3d
    go.uber.org/atomic => github.com/uber-go/atomic v1.4.1-0.20190731194737-ef0d20d85b01
    go.uber.org/multierr => github.com/uber-go/multierr v1.2.0
    go.uber.org/zap => github.com/uber-go/zap v1.10.1-0.20190926184545-d8445f34b4ae
    golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190605123033-f99c8df09eb5
    golang.org/x/exp => github.com/golang/exp v0.0.0-20190510132918-efd6b22b2522
    golang.org/x/image => github.com/golang/image v0.0.0-20190523035834-f03afa92d3ff
    golang.org/x/lint => github.com/golang/lint v0.0.0-20190409202823-959b441ac422
    golang.org/x/mobile => github.com/golang/mobile v0.0.0-20190607214518-6fa95d984e88
    golang.org/x/net => github.com/golang/net v0.0.0-20190606173856-1492cefac77f
    golang.org/x/oauth2 => github.com/golang/oauth2 v0.0.0-20190604053449-0f29369cfe45
    golang.org/x/sync => github.com/golang/sync v0.0.0-20190423024810-112230192c58
    golang.org/x/sys => github.com/golang/sys v0.0.0-20190602015325-4c4f7f33c9ed
    golang.org/x/text => github.com/golang/text v0.3.2
    golang.org/x/time => github.com/golang/time v0.0.0-20190308202827-9d24e82272b4
    golang.org/x/tools => github.com/golang/tools v0.0.0-20190608022120-eacb66d2a7c3
    google.golang.org/api => github.com/googleapis/google-api-go-client v0.6.0
    google.golang.org/appengine => github.com/golang/appengine v1.6.1
    google.golang.org/genproto => github.com/google/go-genproto v0.0.0-20190605220351-eb0b1bdb6ae6
    google.golang.org/grpc => github.com/grpc/grpc-go v1.21.1
)
Copier après la connexion

GO 1.12 prend en charge plus tard. nouvelle variable d'environnement GOPROXY, qui est utilisée pour définir l'adresse proxy dépendante. Il existe deux adresses partagées : celle de la communauté goproxy.io et celle de Youpaiyun. Testez-la vous-même. Utilisez goproxy.cn

export GO111MODULE=on
export GOPROXY=https://goproxy.io
Copier après la connexion
cache

aller au mod pour mettre à jour les dépendances et les mettre en cache localement Le chemin du cache est

$GOPATH/pkg/modSupports IDE

goland

Activer la configuration du mod

[Goland. ]→[Préférence]→[Go Module (vgo)]→ [Activer les modules Go (vgo)]→ [OK]

Après avoir activé le mod, goland vérifiera automatiquement les dépendances et mettra automatiquement à jour go.sum pour introduire bibliothèques dépendantes. Généralement, cela fonctionne bien, mais parfois cela ne fonctionne pas. Vous pouvez l'exécuter manuellement

go mod tidyvscode

vscode ne semble pas se mettre à jour automatiquement. exécuté manuellement

puis redémarré pour prendre effet

go mod tidyLien

Site officiel : https://blog.golang.org/using-go-modules
  • Go Modules : https://blog.csdn.net/ytd7777/article/details/86898187
  • goproxy.io : https://goproxy.io/
  • Veuillez indiquer la source de réimpression
Lien vers cet article : https://tech.hatlonely.com/article/56

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!

Étiquettes associées:
source:segmentfault.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal