Какие типы репозиториев существуют в Nexus?
Тип репозитория в Nexus — это классификация, определяющая, откуда берутся артефакты и как они хранятся. В Nexus существуют три типа репозиториев: hosted, proxy и group.
Аналогия с библиотекой: hosted — это фонд собственных рукописей, которые вы написали и храните у себя. Proxy — это межбиблиотечный абонемент, когда по запросу читателя вы заказываете книгу из другой библиотеки и оставляете копию у себя. Group — это единый каталог, объединяющий и рукописи, и заказанные книги, чтобы читатель искал в одном месте.
1. Hosted (размещённый)
Хранит артефакты, загруженные непосредственно в Nexus. Используется для приватных артефактов организации.
Примеры:
maven-releases— релизные версии (1.0.0, 2.1.3). Обычно не позволяет перезаписывать уже загруженный артефакт — обеспечивает неизменяемость релизов.maven-snapshots— snapshot-версии (1.0.0-SNAPSHOT). Позволяет перезаписывать — каждая сборка обновляет snapshot.
2. Proxy (прокси)
Проксирует и кэширует артефакты из удалённых публичных репозиториев.
- При первом запросе скачивает артефакт из внешнего репозитория и сохраняет в локальный кэш.
- Последующие запросы отдаются из кэша — быстрее и не зависят от доступности внешнего источника.
Примеры:
maven-central— прокси для Maven Central.docker-hub— прокси для Docker Hub.npm-registry— прокси для npmjs.com.
3. Group (групповой)
Объединяет несколько hosted и proxy репозиториев под одним URL. Клиент (Maven, Gradle) настраивается на один URL, а Nexus автоматически ищет артефакт во всех входящих репозиториях.
Пример: maven-public объединяет maven-releases, maven-snapshots и maven-central.
Схема взаимодействия
Пример
Maven/Gradle → maven-public (group)
├── maven-releases (hosted) ← Ваши релизы
├── maven-snapshots (hosted) ← Ваши snapshot'ы
└── maven-central (proxy) ← Кэш Maven Central
Разработчик настраивает один URL (maven-public) и получает доступ ко всем артефактам: и своим, и публичным.
Сравнение типов репозиториев
| Тип | Источник артефактов | Перезапись | Основное назначение |
|---|---|---|---|
| Hosted | Загружаются пользователями/CI | Releases — нет, Snapshots — да | Хранение собственных артефактов |
| Proxy | Скачиваются из внешних репозиториев | Нет (кэш обновляется по политике) | Кэширование внешних зависимостей |
| Group | Агрегация других репозиториев | Не хранит артефакты | Единая точка доступа |
Вывод
Три типа репозиториев в Nexus образуют полную картину управления артефактами: hosted для своих, proxy для чужих, group для единого доступа. Правильная организация репозиториев — основа стабильной CI/CD инфраструктуры.
На собеседовании: классический вопрос — назвать три типа репозиториев и объяснить разницу. Обязательно упомяните group-репозиторий и зачем он нужен — это часто забывают.