Plusieurs binaires pour un même projet

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

Je travaille sur un petit projet en Go qui est censé se composer de deux binaires partageant du code en commun. Après quelques recherches, je suis arrivé à l’arborescence suivante.

+ mon_projet
\_ cmd
   \_ cmd1
      \_ main.go
   \_ cmd2
      \_ main.go
\_ pkg
   \_ common
      \_ common.go

De cette manière, je peux importer et utiliser le module common pour chacune des deux commandes. Le truc, c’est que pour l’instant j’utilise la forme import "../../pkg/common" dans les deux fichiers main.go au lieu de renseigner par exemple une URL vers github.com. Est-ce que c’est problématique ? Est-ce que l’usage d’un dépôt distant est préférable ?

+0 -0

Salut.

Perso, j’ai exactement le même genre d’organisation dans mon projet au boulot, avec mes binaires (presque une dizaine) dans un répertoire app/ et mes packages partagés par ces binaires dans pkg/.

Dans les faits, les imports relatifs ne sont pas tellement problématiques si tu ne changes jamais l’organisation de ton code. Cela dit c’est quand même recommandé de transformer ton projet en un go module, ne serait-ce que pour avoir une belle gestion uniformisée des dépendances, et d’utiliser goimports (au lieu de gofmt) comme moulinette pour laisser la toolchain détecter automatiquement les imports dans ton code (en plus de le reformater avec la coding style standard) : ce dernier utilisera systématiquement des imports absolus, et ne fonctionnera vraiment correctement que si ton code est présenté dans un go module.

Ça se fait facilement avec go mod init nom_de_ton_module à la racine du projet, et (si tu utilises Go >= 1.16) en faisant un go get explicite des paquets dont tu dépends pour remplir automatiquement le fichier go.mod qui sert à déclarer les dépendances. Tu n’es pas obligé de donner une URL complète du style github.com/user/project comme nom d’un module, mais c’est beaucoup plus commode pour le distribuer.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte