go get: disabled by -mod = vendor

Я использую модули Go, и я использую режим продавца, так как он ускоряет мой CI в 2 раза.

I do:

go mod vendor
go build -mod=vendor ...

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

Но когда я хочу использовать go get, например, для установки golint:

go get -u golang.org/x/lint/golint

Он снова загрузит все мои зависимости проекта, а не только golint.

Если я попробую:

go get -mod=vendor -u golang.org/x/lint/golint

Я получил:

go get: disabled by -mod=vendor

Lint будет использоваться в моем образе докера для разработчиков, но не в продукте, поэтому я не хочу добавлять его в go.mod

Что я могу с этим поделать?


person Juliatzin    schedule 27.08.2019    source источник
comment
Почему ваш образ prod docker вообще может содержать какой-либо исходный код?   -  person Adrian    schedule 27.08.2019
comment
это не так, но я думаю, двоичный файл будет больше, если будет больше зависимостей, не так ли?   -  person Juliatzin    schedule 27.08.2019
comment
Нет. Бинарный файл включает только пакеты, импортированные (напрямую или транзитивно) из main.   -  person Adrian    schedule 27.08.2019
comment
Хорошо, замечательно, поэтому я могу бесплатно включить все свои тестовые зависимости и т. Д. Задача решена. Я даже докер слой сохраню   -  person Juliatzin    schedule 27.08.2019
comment
@ Адриан, все в порядке, но я не могу найти свой двоичный файл ... Ты знаешь, где он? Я пробовал $ GOPATH / bin / golint, но его здесь нет :(   -  person Juliatzin    schedule 27.08.2019
comment
Вы не сказали, после каких именно действий вам не удалось найти двоичный файл. В общем, добавление флага командной строки -x к любому go вызову, который должен компилировать что-то, обычно заставляет этот инструмент явно указывать, что он делает; Попробуй это.   -  person kostix    schedule 27.08.2019


Ответы (1)


go get поддерживает согласованность требований ваших зависимостей и использует график import операторов в исходных файлах, чтобы определить, какие пакеты обновлять.

Поэтому go get -u обязательно необходимо загрузить как минимум go.mod файлы для ваших зависимостей, а также исходный код для запрошенного пакета и его обновленных зависимостей.

person bcmills    schedule 12.03.2020