Часто приходится копировать в локальный maven репозиторий различные зависимости, которые отсутствуют в публичных репозиториях.
Кандидатами на добавление в собственный репозиторий могут быть как библиотеки собственной разработки, а также библиотеки, которые не успели попасть в публичный репозиторий или не могут туда попасть в связи с ограничениями, накладываемые лицензией.
Если разработчик только один, то возможно обойтись импортированием зависимости в локальный репозиторий. Если разработчиков много, то так распространять зависимости накладно и даже опасно в случае, если сборка системы может происходить на разных машинах, т.к. существует вероятность перепутать версии библиотек.
Современная практика в разработке все чаще обращается к идее собирать систему на отдельной машине, называемой сервером непрерывной интеграции. В этом случае также возникает необходимость в центральном репозитории. Разработчик при локальной сборке и сервер интеграции должны работать с одними и теми же версиями библиотек.
Также рассчитывать на публичные репозитории не стоит ради повторяемости сборки: результат должен быть один и тот при сборке проекта из системы управления версиями на любой новой машине. Публичные репозитории могут быть недоступными в связи со сбоями или прекращением их существования, старые версии библиотек в них могут удаляться.
На помощь приходят внутренние (internal) репозитории, управляемые менеджерами репозиториев. Наиболее популярными менеджерами репозиториев являются Archiva от Apache Foundation, Artifactory от JFrog и Nexus от Sonatype.
Внутренние репозитории используются не только как шлюз для хранения копий артефактов из публичных репозиториев. В них также приходиться делать deploy (в терминах maven) собираемых библиотек и приложений.
Репозитории используется также для построения конвейеров (Deployment Pipeline в терминологии методологии Continuous delivery). Хочу порекомендовать статью Deployment Pipeline на практике, которая описывает практическую реализацию Deployment Pipeline. В ней также поднята тема использования репозиториев артефактов (maven репозиториев) для этих целей.
В данной статье мы не будем углубляться в сравнение данных менеджеров репозиториев. Сошлюсь только на статью Maven Repository Manager Feature Matrix. В ней проводится сравнение менеджеров репозиториев для хранения артефактов сборки. Сравниваются три наиболее популярных менеджера. Сравнение периодически обновляется по мере выхода новых версий.