Итак, вот как я заставил это работать, используя gitlab.com. Я не говорю, что другие способы не будут работать, они просто не для меня и моей установки. Во-первых, так как мне все равно, доступен ли код для публикации c, я создал новую группу на gitlab.com. Эта новая группа опубликована c с самого начала, поэтому нет необходимости настраивать разрешения. Затем я создаю репозиторий с именем packages
и клонирую репозиторий на свой локальный компьютер с той же структурой каталогов, что и на gitlab.com, gitlab.com/soteapps/packages
с ~/workspace/soteapps/packages
на моем компьютере. Оба из вне GOPATH. Я не уверен, что это имеет значение, но это работает таким образом, поэтому я помещаю это здесь.
Под пакетами я скопировал каталог и код слоггера.
cp -R slogger ~/workspace/soteapps/packages/.
Отредактировано файл go.mod
, соответствующий структуре хранилища, которая находится в каталоге packages
. В каталоге slogger отсутствует файл go .mod.
module gitlab.com/soteapps/packages
go 1.14
Отредактирован импорт hello.go
для соответствия пакету.
package main
import (
"fmt"
"rsc.io/quote"
"gitlab.com/soteapps/packages/slogger"
)
func main() {
fmt.Println(quote.Hello())
slogger.Info("Test message")
}
Построил программу, используя go build -o hello
и затем запустил его hello
со следующими результатами:
Scotts-Mac-mini:hello syacko$ hello
Hello, world.
INFO:2020/04/10 21:11:33 Test message
Scotts-Mac-mini:hello syacko$
Сработало! Спасибо всем, что помогло. Это не было бы решено без вашей помощи.
Примечание: это работает только для publi c репозиториев.