Я конвертировал существующие проекты из использования зависимостей от поставщика через Glide , чтобы использовать поддержку модуля Go 1.11.x .Но я сталкиваюсь с конкретным случаем в одном проекте, используя модули, которые я не могу решить.
У внутреннего проекта 'foo' есть свои зависимости, реализуемые через "go mod vendor":
projects/src/foo/
main.go
vendor/
...
Это работаетотлично подходит для внутренней разработки этого проекта, поскольку сторонний разработчик может клонировать проект в любом месте и создать его, не требуя внешнего прокси-доступа для загрузки зависимостей.
Теперь я пытаюсь разрешить проекту 'bar' создать инструмент с использованием библиотеки 'foo'.
package bar
import "internal.com/project/foo"
Файл "go.mod" содержит только:
module internal.com/project/bar
require internal.com/project/foo v0.0.0-...
Я бы продавал через:
go module vendor
И я строю через:
go build -mod=vendor
Я вижу, что 'foo' будет клонирован из внутреннего репозитория git,и все его зависимости будут загружены из их удаленных источников git, и мой файл 'go.sum' будет обновлен всеми временными зависимостями.Но то, что я действительно хочу, - это только извлечь 'foo' из моей внутренней сети и сгладить зависимости от поставщиков.В идеале не должно быть никаких внешних http-запросов.
Возможно ли это вообще?Флаг "-mod = vendor" был очень полезен при непосредственном построении проекта "foo".Но это, кажется, не применимо здесь, потому что проектная панель не хочет продаваться.Он хочет получить одну первичную зависимость и все.Может показаться, что поддержка модуля Go не заботится о выравнивании временных переходных зависимостей.
Previous При использовании glide
в качестве менеджера пакетов, он извлекал бы 'foo' из внутреннего репозитория git, а затем выравнивал всеего зависимости в моем каталоге поставщиков.
Первоначально опубликовано как вопрос к golang-nuts , без ответа.