В Go 1.6 включена поддержка использования локальных копий внешних зависимостей для удовлетворения импорта этих зависимостей, часто называемого вендорингом.
Код под каталогом с именем vendor импортируется только кодом в дереве каталогов, корнем которого является родительский элемент vendor, и только с использованием пути импорта, в котором префикс не указан, вплоть до элемента vendor.
Вот пример из предыдущего поста, но с "internal" каталогом, переименованным в "vendor" и добавленным новым каталогом foo/vendor/crash/bang:
/home/user/go/
src/
crash/
bang/ (go код в пакете bang)
b.go
foo/ (go код в пакете foo)
f.go
bar/ (go код в пакете bar)
x.go
vendor/
crash/
bang/ (go код в пакете bang)
b.go
baz/ (go код в пакете baz)
z.go
quux/ (go код в пакете main)
y.go
Применяются те же правила видимости, что и для internal, но код в z.go импортируется как "baz", а не как "foo/vendor/baz".
Код в vendor каталогах, находящихся глубже в дереве исходного кода затеняет код в вышестоящих каталогах. В поддереве с корнем в foo импорт "crash/bang" разрешается в "foo/vendor/crash/bang", а не в "crash/bang" верхнего уровня.
Код в каталогах поставщиков не подлежит проверке пути импорта (см. go help importpath).
Когда 'go get' проверяет или обновляет git-репозиторий, теперь он также обновляет подмодули.
Каталоги поставщиков не влияют на размещение новых репозиториев, впервые проверяемых с помощью функции 'go get': они всегда помещаются в основной GOPATH, а не в поддерево поставщиков.
Читайте также:
Комментариев нет:
Отправить комментарий