Как работает директива exclude в файле go.mod? - PullRequest
0 голосов
/ 26 ноября 2018

В новой версии Go 1.11 представлена ​​концепция модулей, которая является удивительной.

В документации говорится, что в файле go.mod можно использовать четыре директивы: module, require, exclude, replace.

Также объясняется, что:

директивы исключения и замены действуют только на текущий («основной») модуль.Директивы исключать и заменять в модулях, отличных от основного, игнорируются при сборке основного модуля.Поэтому операторы replace и exclude позволяют главному модулю полностью контролировать собственную сборку, не подвергаясь также полному контролю зависимостей.

Но я до сих пор не понимаю, как работает директива exclude.

Может кто-нибудь объяснить мне, как работает директива exclude, и, если возможно, привести пример ее использования?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вот несколько гипотетических гипотетических примеров:

go.mod

module github.com/example/project

require (
    github.com/SermoDigital/jose v0.0.0-20180104203859-803625baeddc
    github.com/google/uuid v1.1.0
)

exclude github.com/SermoDigital/jose v0.9.1

replace github.com/google/uuid v1.1.0 => git.coolaj86.com/coolaj86/uuid.go v1.1.1

exclude

В случае пакета github.com/SermoDigital/jose он имеет надлежащийgit-тег для v0.9.1, но текущей версией является v1.1, что является NOT правильным тегом git (отсутствует версия "patch").

Исключая сломанную версиюприводит к тому, что go mod выбирает master.

replace

Аналогично (и действительно гипотетически), если у меня есть патч для github.com/google/uuid, я могу создать форк и использовать replace чтобы получить свою собственную версию, пока я жду, когда вышестоящая версия примет мой патч (или нет).

0 голосов
/ 26 ноября 2018

Читать весь документ Модули .Далее в документе из вашей цитаты,

... модуль верхнего уровня в сборке может исключать определенные версии зависимостей или заменять другие модули другим кодом.См. Полное предложение для подробностей и обоснования .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...