Как использовать частный пакет Go с модулями

У меня есть проект, который предоставляет API, но не на github.com, а на github.ny.nts.com. Как я могу использовать его в своем коде?

Я добавил в новую программу и в импорте поместил:

import “github.ny.nts.com/fds/client”

Теперь, когда я запускаю go mod init, он ничего не добавляет (что связано с этим проектом) в файл go.mod

Как я могу определить «реестр» (аналогично nodejs / npm, когда вы можете сказать, откуда загружать пакеты) на ходу и сказать gomod, чтобы он взял его мою компанию git?

Я могу клонировать проект без каких-либо проблем, поэтому у меня нет проблем с доступом к проекту git.


person Jon lib    schedule 06.11.2019    source источник
comment
Вы можете попробовать с GOPRIVATE = github.ny.nts.com и повторно запустить go mod tidy   -  person sayboras    schedule 06.11.2019
comment
В Go нет реестра / репозитория пакетов.   -  person Adrian    schedule 06.11.2019
comment
@ Адриан, да, сейчас мы вроде как делаем: база данных суммы и прокси модуля.   -  person Peter    schedule 06.11.2019
comment
Вроде, но не совсем так, потому что они все еще простые прокси над произвольными исходными репозиториями.   -  person Adrian    schedule 06.11.2019


Ответы (1)


Вы можете неявно установить зависимость, запустив go get в корне вашего проекта, например

$> go get github.ny.nts.com/fds/client

Если репозиторий является частным, вам необходимо реализовать обходной путь, поскольку go get по умолчанию https для клонирования репозиториев git. Выполнение следующего из папки вашего проекта укажет git на использование SSH (и, следовательно, ваших сохраненных учетных данных) при извлечении пакетов из вашего репо для этого проекта:

$> git config insteadOf."https://github.ny.nts.com/".use "[email protected]:"

Как только это будет сделано, вы сможете запустить go get ... и вытащить свой пакет.

person PeterFraedrich    schedule 11.11.2019