Получение Nexus для загрузки зависимостей из репозитория без файла .index

Я только что установил последнюю версию Nexus для нашей компании, и она отлично работает. Мы добавили несколько сторонних репозиториев, и в одном из них нет файла .index. Таким образом, похоже, что Nexus не может его проиндексировать, а местный знаток не может запрашивать отсылки в этом репозитории. Определенно неудачный.

Есть ли какой-либо способ обойти это, кроме загрузки депо вручную и установки их в наш сторонний «размещенный» репозиторий?

Рассматриваемый репозиторий maven: http://wicketstuff.org/maven/repository

Спасибо!


person kinabalu    schedule 09.11.2009    source источник
comment
Nexus может отлично проксировать репозиторий Wicketstuff, поэтому говорить, что локальный maven не может запрашивать отсылки в этом репозитории, неверно. Решение этой проблемы состоит в том, чтобы попросить сопровождающих Wicketstuff перейти к менеджеру репозитория, который может генерировать индекс Nexus (все они Archiva, Artifactory и Nexus используют формат индекса Nexus, и я почти уверен, что все они раскрывают формат индекса Nexus.)   -  person Tim O'Brien    schedule 18.12.2009


Ответы (2)


(РЕДАКТИРОВАТЬ: перечитав мой первоначальный ответ, я думаю, что он был не совсем ясным и точным, поэтому я редактирую его, чтобы прояснить некоторую часть. Кроме того, ОП добавил комментарий, на который я тоже хотел ответить.)

Таким образом, похоже, что Nexus не может его проиндексировать, а местный знаток не может запрашивать отсылки в этом репозитории.

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

Для меня индексы Nexus (которые являются индексами Lucene) - это «просто» хорошая вещь, позволяющая сделать репозитории доступными для поиска, но неиндексированный репозиторий, безусловно, может быть проксирован (Nexus не может ожидать, что все репозитории по всему миру предоставят индекс Nexus). Так что на самом деле должно быть что-то еще не так с вашей настройкой.

Предполагая, что вы хотите использовать SNAPSHOTS калитки, я настроил Nexus и использовал POM, показанный ниже:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.samples.wicket</groupId>
  <artifactId>nexus-wicket-testcase</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>nexus-wicket-testcase</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket</artifactId>
      <version>1.5-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

Затем я добавил http://wicketstuff.org/maven/repository в качестве снимка в Nexus и перечислить его в группе Общедоступные репозитории. Наконец, я настроил Maven, как описано в Настройка Maven для использования одной группы Nexus.

С этой настройкой я получаю следующий вывод при запуске, например, eclipse:eclipse:

$ mvn eclipse:eclipse
...
[INFO] snapshot org.apache.wicket:wicket:1.5-SNAPSHOT: checking for updates from central
Downloading: http://localhost:8081/nexus/content/groups/public/org/apache/wicket/wicket/1.5-SNAPSHOT/wicket-1.5-20091109.012145-88.pom
2K downloaded  (wicket-1.5-20091109.012145-88.pom)
[INFO] snapshot org.apache.wicket:wicket-parent:1.5-SNAPSHOT: checking for updates from central
Downloading: http://localhost:8081/nexus/content/groups/public/org/apache/wicket/wicket-parent/1.5-SNAPSHOT/wicket-parent-1.5-SNAPSHOT.pom
22K downloaded  (wicket-parent-1.5-SNAPSHOT.pom)
Downloading: http://localhost:8081/nexus/content/groups/public/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.pom
2K downloaded  (slf4j-api-1.5.8.pom)
Downloading: http://localhost:8081/nexus/content/groups/public/org/slf4j/slf4j-parent/1.5.8/slf4j-parent-1.5.8.pom
7K downloaded  (slf4j-parent-1.5.8.pom)
Downloading: http://localhost:8081/nexus/content/groups/public/org/apache/wicket/wicket/1.5-SNAPSHOT/wicket-1.5-20091109.012145-88.jar
1944K downloaded  (wicket-1.5-20091109.012145-88.jar)
Downloading: http://localhost:8081/nexus/content/groups/public/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.jar
22K downloaded  (slf4j-api-1.5.8.jar)
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 2 seconds
[INFO] Finished at: Wed Nov 11 06:12:01 CET 2009
[INFO] Final Memory: 9M/79M
[INFO] ------------------------------------------------------------------------

Все выглядит хорошо для меня.


... но местный знаток точно знает, как получить отсылки из репозитория, номер группы + артефакт + номер сборки дает ему полный путь к приложению.

Да, поэтому я и думаю, что у вас где-то проблема с настройкой. Maven должен иметь возможность найти зависимость (например, калитку) в нужном репозитории, если Maven и Nexus правильно настроены, как показано. Дважды проверьте определение settings.xml и/или зависимостей.

Чтобы Nexus проиндексировал его, ему пришлось бы просканировать все пути к каталогам, которые он нашел, что, по-видимому, не выполняется.

Это не то, как все работает AFAIK. Если репозиторий не предоставляет индекс, Nexus может индексировать только уже загруженные артефакты. Nexus не сканирует репозиторий.

person Pascal Thivent    schedule 09.11.2009
comment
конечно, интересная мысль, но местный знаток точно знает, как получить отсылки из репо, номер группы + артефакт + номер сборки дает ему полный путь к приложению. для того, чтобы Nexus проиндексировал его, ему пришлось бы просканировать все пути к каталогам, которые он нашел, что, по-видимому, не выполняется. - person kinabalu; 10.11.2009
comment
Правильный. Nexus является хорошим гражданином репозитория и не будет сканировать удаленное репо. Индексирование влияет только на поиск удаленного устройства, но не влияет на возможность проксирования артефактов. - person Brian Fox; 18.11.2009
comment
но если nexus не просматривает удаленный репозиторий, а удаленный репозиторий не предоставляет индекс, как nexus узнает, что там доступно? - person Michael Wiles; 18.04.2011
comment
В этом нет необходимости, Maven делает запросы на основе определенного URL-адреса, так что это, по сути, похоже на игру в рыбу. Repo1: у вас есть артефакт x/y/z/1.0/z-1.0.jar? - person Brian Fox; 01.07.2011

Установите для параметра «Загрузить удаленные индексы» значение «Ложь» в Nexus.

Затем запустите локально «mvn -U clean package».

person Anders B    schedule 07.05.2012