Как заставить Sonatype Nexus обновиться?

Я пытаюсь использовать onejar-maven-plugin в моем pom.xml:

<plugin>
    <groupId>org.dstovall</groupId>
    <artifactId>onejar-maven-plugin</artifactId>
    <version>1.4.4</version>
    <executions>
        <execution>
            <configuration>
                <mainClass>com.exmaple.myproj.MpPort_MpSoapPort_Client</mainClass>
                <onejarVersion>0.97</onejarVersion>
                <attachToBuild>true</attachToBuild>
                <classifier>onejar</classifier>
            </configuration>
            <goals>
                <goal>one-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<pluginRepositories>
    <pluginRepository>
        <id>onejar-maven-plugin.googlecode.com</id>
        <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
    </pluginRepository>
</pluginRepositories>

но по какой-то причине попытка собрать его с помощью плагина Eclipse Maven (установка Maven) приводит к ошибке сборки:

Downloading: https://mynexus.example.com/nexus/content/repositories/central/org/dstovall/onejar-maven-plugin/1.4.4/onejar-maven-plugin-1.4.4.pom
[INFO] Unable to find resource 'org.dstovall:onejar-maven-plugin:pom:1.4.4' in repository onejar-maven-plugin.googlecode.com (http://onejar-maven-plugin.googlecode.com/svn/mavenrepo)
Downloading: https://mynexus.example.com/nexus/content/repositories/central/org/dstovall/onejar-maven-plugin/1.4.4/onejar-maven-plugin-1.4.4.pom
[INFO] Unable to find resource 'org.dstovall:onejar-maven-plugin:pom:1.4.4' in repository central (http://repo1.maven.org/maven2)
Downloading: https://mynexus.example.com/nexus/content/repositories/central/org/dstovall/onejar-maven-plugin/1.4.4/onejar-maven-plugin-1.4.4.pom
[INFO] Unable to find resource 'org.dstovall:onejar-maven-plugin:pom:1.4.4' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: org.dstovall:onejar-maven-plugin

Reason: POM 'org.dstovall:onejar-maven-plugin' not found in repository: Unable to download the artifact from any repository

  org.dstovall:onejar-maven-plugin:pom:1.4.4

from the specified remote repositories:
  Nexus (https://mynexus.example.com/nexus/content/repositories/central)

 for project org.dstovall:onejar-maven-plugin

Поэтому я вручную загрузил onejar-maven-plugin.jar и установить его через командную строку, и я, похоже, получаю аналогичную ошибку:

C:\Users\daniel\myproj>mvn install:install-file -Dfile=onejar-maven-plugin-1.4.4.jar -DgroupId=com.jolira -DartifactId=onejar-maven-plugin -Dversion=1.4.4 -Dpackaging=jar
[INFO] Scanning for projects...
Downloading: https://mynexus.example.com/nexus/content/repositories/central/org/dstovall/onejar-maven-plugin/1.4.4/onejar-maven-plugin-1.4.4.pom
[INFO] Unable to find resource 'org.dstovall:onejar-maven-plugin:pom:1.4.4' in repository onejar-maven-plugin.googlecode.com (http://onejar-maven-plugin.googlecode.com/svn/mavenrepo)
Downloading: https://mynexus.example.com/nexus/content/repositories/central/org/dstovall/onejar-maven-plugin/1.4.4/onejar-maven-plugin-1.4.4.pom
[INFO] Unable to find resource 'org.dstovall:onejar-maven-plugin:pom:1.4.4' in repository central (http://repo1.maven.org/maven2)
Downloading: https://mynexus.example.com/nexus/content/repositories/central/org/dstovall/onejar-maven-plugin/1.4.4/onejar-maven-plugin-1.4.4.pom
[INFO] Unable to find resource 'org.dstovall:onejar-maven-plugin:pom:1.4.4' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: org.dstovall:onejar-maven-plugin

Reason: POM 'org.dstovall:onejar-maven-plugin' not found in repository: Unable to download the artifact from any repository

  org.dstovall:onejar-maven-plugin:pom:1.4.4

from the specified remote repositories:
  Nexus (https://mynexus.example.com/nexus/content/repositories/central)

 for project org.dstovall:onejar-maven-plugin

Насколько я понимаю, из-за того, что у нас есть зеркало Nexus, которое не содержит этого конкретного артефакта, все становится запутанным.

Поэтому я попытался выполнить инструкции по Как заставить Sonatype Nexus регенерировать/переиндексировать свои метаданные но вкладка «Обзор индекса» не имеет такого контекстного меню! на нашем Sonatype Nexus.

введите здесь описание изображения

Я читал здесь, что «Nexus кэширует только те артефакты, которые запрашивают клиенты. правильные версии». Но именно это я и делаю — без каких-либо изменений в результате.

Как мне выйти из этой ситуации «курица и яйцо» и получить эту версию плагина onejar-maven-plugin. 1.4.4 в мое зеркало Nexus?

(В качестве альтернативы, как я могу поместить его в свой локальный кеш .m2?)


person Withheld    schedule 27.11.2013    source источник
comment
В моем случае на машине Nexus не осталось места.   -  person Ahmet Koylu    schedule 10.02.2021


Ответы (1)


Вы можете заставить Maven обновить и снова запросить зависимости, даже если локальное репо содержит метаданные об артефактах, недоступных с помощью -U

mvn clean install -U 

должно сработать.

Также вы должны изменить свой settings.xml, чтобы он указывал на общедоступную группу, а не только на центральное репо напрямую. Дополнительную информацию можно найти в книге Nexus.

И вы должны заметить, что в центральном репозитории нет подключаемого модуля onejar, который вы пытаетесь использовать. Просмотрите результаты поиска и посмотрите, насколько groupId является com.joilira а не org.dstovall

Кроме того, если вы действительно хотите использовать плагин onejar из org.dstovall, вам следует добавить URL-адрес http://onejar-maven-plugin.googlecode.com/svn/mavenrepo/ в качестве прокси-репозитория для Nexus, добавьте его в общедоступную группу, а затем используйте общедоступную группу в своем settings.xml

person Manfred Moser    schedule 28.11.2013
comment
Я собирался также предложить временно закомментировать элемент <mirrors> в его settings.xml (в качестве обходного пути, чтобы по крайней мере получить пакет в его локальный .m2 кеш), но потом заметил, что у вас есть еще более блестящее понимание: его Nexus указывает на com.jolira, а не com.dstoval. +1 за это! - person sfinja; 28.11.2013
comment
Это файл pom.xml с неправильной ссылкой. Ничего общего с Nexus на самом деле .. - person Manfred Moser; 28.11.2013
comment
Но если вы посмотрите на скриншот, который он предоставил, его Nexus действительно указывает на nejar-maven-plugin, только это от jolira, а не dstoval. Разве это не причина сбоя его установки maven? - person sfinja; 29.11.2013
comment
Нет... его настройки Maven вызывают попытку загрузки из хранилища, как видно из сообщений об ошибках, в которых упоминается mynexus.example.com/nexus/content/repositories/central - person Manfred Moser; 29.11.2013
comment
Проблема в том, что его установка Maven имеет pluginRepo в pom, который игнорируется, потому что он использует mirrorOf * в своих настройках и центральное репо там. - person Manfred Moser; 29.11.2013
comment
Выходит, вы оба были правы. Да, мой файл settings.xml указывает на центральный, а не на общедоступный, но на самом деле основная причина моей проблемы заключалась в том, что я не заметил, что groupId отличается. - person Withheld; 02.12.2013