Suite à la sortie de Go 1.11, j'ai essayé de déplacer mes référentiels vers les modules Go, en ajoutant un go.mod
fichier à leur racine.
Une de mes bibliothèques racine my.Host/root
est dans sa version 17.0.1, j'ai donc écrit dans sa go.mod
fichier:
module my.Host/root/v17
J'ai marqué cette version v17.0.1
comme indiqué dans le manuel des modules Go.
Lorsque j'essaie de créer un nouveau projet Go qui utilise ma bibliothèque racine, comme:
package main
import root "my.Host/root/v17"
func main() {
root.DoSomething()
}
Et essayez de le compiler, j'obtiens l'erreur suivante:
go: my.Host/[email protected]: go.mod a le chemin du module post-v0 "my.Host/root/v17" à la révision 6bc78016491a
Je ne sais pas pourquoi cela se produit. J'ai explicitement ajouté v17.0.1
dans le go.mod
fichier, mais chaque tentative de go build
remplace l'entrée par un v0.0.0-20180828034419-6bc78016491a
version qui échoue ensuite car à ce commit, le go.mod
fichier module
l'entrée de ma bibliothèque racine se termine en effet par un v17
, Comme il se doit.
Pour mémoire, cette validation est la même que la balise v17.0.1
version.
Qu'est-ce que je fais mal ici? Comment puis-je déboguer cette situation?
J'ai dû faire deux erreurs:
v17.0.0
tag pointerait vers un commit où go.mod
ne contenait pas le v17
suffixe du chemin d'importation. Par conséquent, il semble que les outils Go considèrent l'ensemble de la version majeure de la v17 comme une v0/v1, même si les balises v17 ultérieures pointent vers un commit avec un go.mod
directive, d'où l'ID de validation "translation".go.mod
fichier, j'ai spécifié par erreur require my.Host/root v17.0.1
au lieu de require my.Host/root/v17 v17.0.1
.Après avoir résolu ces deux problèmes, tout semble redevenir normal et cela fonctionne parfaitement. Je souhaite que la documentation ait été plus claire à ce sujet mais je suppose que c'est une bonne occasion de faire une contribution!
L'erreur que j'ai eue était: github.com/emicklei/[email protected]: go.mod has post-v0 module path "github.com/emicklei/go-restful/v2" at revision 3658237ded10
Ajout de github.com/emicklei/go-restful
avec v2
ainsi: github.com/emicklei/go-restful/v2
dans mon go.mod
le fichier l'a corrigé pour moi.