Как добавить локальную зависимость вендору при использовании go mod

До того как я использовал go dep, но теперь офис обеспечит официальный инструмент go mod,

Когда я использую go dep Я могу добавить пакеты локальной зависимости к поставщику и ignored в Gopkg.toml игнорировать поиск пакета из репо. Я могу выполнить go dep update обычно.

Сейчас пользуюсь go mod Я также добавляю пакет локальной зависимости вендору и добавляю его exclude в go.mod, Но когда я выполню go mod tidy удалить пакет, хотя мой проект существует import xxx,

Что я сделал:

  1. создать новый проект
  2. выполнить go mod init
  3. изменить go.mod exclude privaterepo.com/bb/bb

  4. скопируйте мой локальный модуль продавцу, потому что локальный модуль находится в частном репо, который не поддерживает https.

  5. Теперь поставщик просто так:

    vendor |-github.com/aa/aa |-privaterepo.com/bb/bb

  6. импорт "privaterepo.com/bb/bb"
  7. выполнить go build -mod vendor
  8. чем я получил ошибку "не могу найти модуль для пути privaterepo.com/bb/bb" 9 всегда пытайтесь заменить, но это также не работает

Итак, что я должен сделать, чтобы добавить локальный пакет к поставщику и избежать go mod убери это?

1 ответ

Итак, что я должен сделать, чтобы добавить локальный пакет к поставщику и избежать его удаления?

Ну, я думаю, ты не можешь этого сделать. Это не так, как это работает. go mod vendor управляет папкой вашего поставщика.

Вместо excludeВ пакете go.mod вы должны добавить replace директива для инструктирования инструмента go искать пакет не с privaterepo.com, а с локальной файловой системы. Цитирование из https://github.com/golang/go/wiki/Modules

replace также может использоваться для информирования go-tooling об относительном или абсолютном расположении модулей на диске в многомодульном проекте, например:

   replace example.com/project/foo => ../foo

Так что в вашем случае: не пытайтесь вручную поместить privaterepo.com/bb/bb в вендор, но сделайте это где-нибудь за пределами текущего проекта и используйте

replace privaterepo.com/bb/bb => ../bb

И разреши go mod скопируйте этот материал из файловой системы вашему поставщику.

Другие вопросы по тегам