Найти в Дзене
Oleg Nakrainikoff

Зеркалирование зависимостей maven/gradle через nexus

Всем привет! Сегодня предлагаю рассмотреть тему, так сказать, на злобу дня. Использование локального/корпоративного сервера nexus позволяет как хранить артефакты наших проектов, так и делать зеркалирование для артефактов из внешних репозиториев. Зеркалирование сокращает время загрузки артефактов из вне и предохраняет от недоступности внешних репозиториев (что на данный момент может стать весьма актуальным). Развертывание nexus Для демо проекта развернем nexus через docker-compose https://github.com/onakrainikoff/nexus-mirroring/blob/main/nexus/docker-compose.yml. Настройка nexus. Переходим в Server administration and configuration -> Repository -> Repositories -> Кнопка Create repository: Нам необходимо создать 2 maven репозитория с типом proxy: Первый репозиторий называем maven-central и указываем Remote storage "https://repo1.maven.org/maven2/". Обратите внимание, что он может быть уже создан по дефолту. Второй репозиторий называем gradle-plugins и указываем Remote storage "https:/
Оглавление

Всем привет!

Сегодня предлагаю рассмотреть тему, так сказать, на злобу дня.

Использование локального/корпоративного сервера nexus позволяет как хранить артефакты наших проектов, так и делать зеркалирование для артефактов из внешних репозиториев.

Зеркалирование сокращает время загрузки артефактов из вне и предохраняет от недоступности внешних репозиториев (что на данный момент может стать весьма актуальным).

Развертывание nexus

Для демо проекта развернем nexus через docker-compose https://github.com/onakrainikoff/nexus-mirroring/blob/main/nexus/docker-compose.yml.

-2

Настройка nexus.

Переходим в Server administration and configuration -> Repository -> Repositories -> Кнопка Create repository:

-3

Нам необходимо создать 2 maven репозитория с типом proxy:

-4

Первый репозиторий называем maven-central и указываем Remote storage "https://repo1.maven.org/maven2/". Обратите внимание, что он может быть уже создан по дефолту. Второй репозиторий называем gradle-plugins и указываем Remote storage "https://plugins.gradle.org/m2/" .

Maven

Здесь все достаточно просто, нам достаточно добавить следующую конфигурацию в файл ~/.m2/setting.xml:

-5

Теперь соберем наш тестовый maven проекта (mvn clean install) и проверим, что в nexus появились артефакты из внешних репозиториев:

-6

Gradle

Здесь придется слегка повозиться. Сначала добавим в конфигурацию в файл ~/.gradle/gradle.properties:

-7

Далее в gradle проекте в файле build.gradle подключим репозиторий maven-central следующим образом:

-8

Затем в файле settings.gradle подключим репозиторий для плагинов:

-9

Теперь соберем наш тестовый gradle проект (gradle clean build) и проверим, что в nexus появились артефакты из внешних репозиториев:

-10

Эпилог

Nexus далеко не единственный продукт, который позволяет делать зеркалирование. Выбор конкретного сервера для maven репозитория, остается в первую очередь на ваше усмотрение - на конфигурацию maven/gradle, описанную выше, концептуально это повлиять не должно.

Ссылки

Демо проект: https://github.com/onakrainikoff/nexus-mirroring

Документация maven: https://maven.apache.org/guides/mini/guide-mirror-settings.html

Документация nexus: https://help.sonatype.com/repomanager3/nexus-repository-administration/formats/maven-repositories

Также подписывайтесь на

мой telegram: https://t.me/onakrainikoff

мой github https://github.com/onakrainikoff

#java #maven #gradle #nexus