Обновите репозиторий Nexus с местными артефактами

StackOverflow https://stackoverflow.com/questions/4243477

  •  27-09-2019
  •  | 
  •  

Вопрос

Я недавно скачал некоторые артефакты Maven непосредственно к моему местному хранилищу (.m2 / хранилище). Теперь я установил менеджер репозитория Nexus и должен заполнить его хранилище, не загружая все артефакты снова. Есть ли способ обновить репозиторий Nexus с местным. Я не хочу просто скопировать их, потому что Nexus отдельных артефактов относительно их общедоступных серверов (центральный, кодхаус и т. Д.), И структура местной репозитории не.

Обновление: Между тем я скопировал артефакты из местного хранилища в хранилище Nexus (публичный репозиторий). Я могу просматривать артефакты через Nexus WebApp, но Maven как-то не может разрешить артефакты из Nexus. Мне нужно зарегистрировать их особенно? Я переиндексировал публичный репозиторий и перезапустил Nexus несколько раз - без изменений.

Это было полезно?

Решение

Nexus имеет несколько визиторов: Хостеренные репозитории (те, которые действительно хранят артефакты Maven), Прокси-репозитории (этот перенаправляющий трафик на другие удаленные репозитории, когда требуется артефакт), Виртуальные репозитории (простой адаптер репозиториев Maven1 [из объема этого вопроса]). Вы также можете создать Группы репозитория которые могут служить артефактам от любого из его агрегатов ( public Репозиторий является одним из них).

Кроме того, Nexus разделяет свои репозитории в соответствии с политикой публикации в снимки а также релизы. Отказ Бывшие магазины хранят только артефакты снимки; Хотя последние, теоретически, могут хранить как снимки, так и релизы, но он на самом деле ведет себя багги, когда репо очень большой и содержит снимки.

Для того, чтобы принять ваши артефакты, вам нужно:

Первый: Разделите свой локальный репозиторий на два: один, содержащий снимки, а другой, содержащий релизы. Инструмент для репозитория Nexus поможет вам, если ваш репо очень большой:

    <dependency>
        <groupId>org.sonatype.nexus.tools</groupId>
        <artifactId>nexus-repository-conversion-tool</artifactId> 
        <version>1.8.0.1</version>
        <classifier>cli</classifier> 
    </dependency>

После запуска вы можете просто выполнить java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget куда Source это каталог, который содержит локальный репозиторий для перемещения в Nexus и Target является существующим, пустым и записью записи, где преобразование инструмент покинет разделенные репозитории. При условии, что исходный каталог repository и цель temp, это создаст temp/repository-snapshots а также temp/repository-releases каталоги.

Второй: Переместите свои разделенные REPOS в Nexus. И оставить их в ${NEXUS_HOME}/sonatype-work/nexus/storage, или везде, где ваша установка Nexus настроен для хранения репозиториев.

В третьих: Создать два Хостеренные репозитории с тем же идентификатором, что и репо, вы переехали на второй шаг. (в примере repository-snapshots а также repository-releases)

Если ваш репо, только содержал релизы, ваше решение могло бы работать, но вы получите другую ошибку. Хотя Nexus хранит артефакты для каждого хранилища, хранение тех, которые не размещены REPOS, просто для кэширования (как в случае public Репозиторий), вы должны были бы скопировать ваше содержание в хостерную, чтобы работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top