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
и Target temp
, он создаст каталоги temp/repository-snapshots
и temp/repository-releases
.
Секунда: переместите разделенные репозитории на нексус. И оставьте их в ${NEXUS_HOME}/sonatype-work/nexus/storage
, или там, где ваша установка Nexus настроена для хранения репозиториев.
Третье: создайте два размещенных репозитория с тем же идентификатором, что и репозитории, которые вы переместили на втором шаге. (в примере repository-snapshots
и repository-releases
)
Если бы в вашем репо были только релизы, ваше решение могло бы сработать, но вы допустили еще одну ошибку. Хотя nexus хранит артефакты для каждого репозитория, хранилище тех, которые не являются размещенными репозиториями, предназначено только для целей кэширования (как в случае с репозиторием public
), вам придется скопировать содержимое в размещенный репозиторий, чтобы работа.