Mi GOPATH es /Users/joe/go
. Estoy trabajando en un proyecto llamado myproj
, que es un paquete llamado myproj
.¿Cuál es la organización correcta para los proyectos de Go que usan Git (o cualquier VCS)?
Si quiero ser capaz de escribir import "myproj"
entonces la estructura de directorios que necesito es:
$GOPATH/src/myproj/myproj.go
$GOPATH/src/myproj/myproj_test.go
...
Sin embargo, me parece que no puede hacer este ajuste con Git. Si miro un example package from Google veo el siguiente formato:
go.example/hello/hello.go
go.example/LICENSE
Dónde go.example
es el nombre de la cesión temporal.
Por lo tanto, los directorios del paquete real se encuentran dentro de el repositorio. Si pongo el contenido de este repositorio en un directorio en mi $ GOPATH, p.
$GOPATH/src/go.example/hello/hello.go
$GOPATH/src/go.example/LICENSE
entonces voy a tener que escribir import "go.example/hello"
en lugar de import "hello"
.
Volviendo a mi proyecto, necesito empaquetarlo en un repositorio de Git y luego necesito un directorio de contenedores. Así que mi estructura de archivos actual es:
$GOPATH/src/myproj # The dir for the git repo
$GOPATH/src/myproj/.git
$GOPATH/src/myproj/LICENSE # Files in the base of the repo
$GOPATH/src/myproj/myproj/myproj.go # Package files in package dir
$GOPATH/src/myproj/myproj/myproj_test.go
necesito el directorio myproj
exterior para delimitar el repositorio git y necesito el interior para ser el directorio del paquete. El resultado es que necesito escribir import "myproj/myproj"
en lugar de import "myproj"
.
¿cómo puedo solucionar esto? ¿Tengo que agregar varios $ GOPATHS, uno por cada proyecto que estoy desarrollando?
Gracias de antemano.
Sí, necesita agregar varias entradas a su GOPATH (separadas según lo definido por su plataforma). Por favor, lea mi respuesta detallada a [esto] (http://stackoverflow.com/questions/10838469/how-to-compile-go-program-consisting-of-multiple-files) –
IIUC: No, no creo una entrada GOPATH para cada paquete es recomendable en absoluto. – zzzz
No para cada paquete, sino para cada proyecto (al menos los que no están expuestos en github (o similar) con una URL definida y fija). –