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épertoirevendor
et les dépendances sous le chemin$GOPATH
-
GO111MODULE=on
: Activez le mod, téléchargez et recherchez les dépendances uniquement en fonction dego.mod
-
GO111MODULE=auto
: valeur par défaut, dans les chemins non$GOPATH
et inclure le Mod n'est activé que dans lesgo.mod
projets
Commande principale
go mod init # 在新的 go 项目中执行,自动分析依赖,创建 go.sum go mod tidy # 自动分析依赖,并自动添加和删除依赖 go mod vendor # 创建 vendor 目录,将依赖拷贝到当前的 vendor 文件夹下 go mod download # 手动下载依赖
- Pour un nouveau projet go, il vous suffit de l'exécuter lors de la création d'un nouveau projet
go mod init
- 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 avecgo 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 )
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 )
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 )
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
aller au mod pour mettre à jour les dépendances et les mettre en cache localement Le chemin du cache est
$GOPATH/pkg/mod
Supports 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 tidy
vscode
vscode ne semble pas se mettre à jour automatiquement. exécuté manuellement
puis redémarré pour prendre effetgo mod tidy
Lien
- Go Modules : https://blog.csdn.net/ytd7777/article/details/86898187
- goproxy.io : https://goproxy.io/
- Veuillez indiquer la source de réimpression