Сгладить вендорные переходные зависимости первичной зависимости - PullRequest
0 голосов
/ 02 октября 2018

Я конвертировал существующие проекты из использования зависимостей от поставщика через 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 , без ответа.

1 Ответ

0 голосов
/ 06 октября 2018

В данный момент это не работает, используется только каталог поставщиков верхнего уровня.Из справки модулей :

Чтобы построить с помощью каталога поставщиков верхнего уровня основного модуля для удовлетворения зависимостей (отключение использования обычных сетевых источников и локальных кэшей), используйте 'gobuild -mod = vendor '.Обратите внимание, что используется только каталог поставщика верхнего уровня основного модуля;Каталоги поставщиков в других местах по-прежнему игнорируются.

Для этого конкретного случая использования я бы рекомендовал подождать, пока go modules не созреет.

...