Путаница с прокси-сервером репозитория maven

Я использую maven 3.0 (с настройкой nexus) для создания своих проектов и получаю ошибки сборки:

Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact directory:apacheds-core:jar:${apacheds_version} in central (http://localhost:8081/nexus/content/repositories/central)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:945)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:940)

Моя основная путаница: Когда maven видит зависимость в pom.xml, как он ищет артефакты в удаленных репозиториях?

Мое текущее понимание:

  1. Сначала он будет искать в локальном репо ( .m2/repository ).

  2. Если он не находит там , он попытается найти репозиторий, указанный в settings.xml под тегом repository. Вопрос: пробует ли он все упомянутые репозитории? или только первый? Ниже я упомянул 5 репозиториев: maven ищет их все один за другим или только первый?

<repositories> <repository> <id>central</id> <url>http://localhost:8081/nexus/content/repositories/central</url> </repository> <repository> <id>remote</id> <url>http://localhost:8081/nexus/content/repositories/remote-proxy-nexus-central</url> </repository> <repository> <id>thirdParty</id> <url>http://localhost:8081/nexus/content/repositories/thirdparty</url> </repository> <repository> <id>codehaus</id> <url>http://localhost:8081/nexus/content/repositories/codehaus-snapshots</url> </repository> <repository> <id>public</id> <url>http://localhost:8081/nexus/content/groups/public</url> </repository> </repositories>

Последнее мое замешательство связано с разделом прокси в settings.xml. Что это за локации:

 <proxy>
  <id>remote-proxy-nexus-central</id>
  <active>true</active>
  <protocol>http</protocol>
  <host>repo1.maven.org/maven2</host>
  <port>8080</port>

</proxy>

person Bhaskar    schedule 06.01.2013    source источник


Ответы (2)


Я могу сказать вам, что мы используем локальный Nexus, и у всех наших пользователей есть следующее в их settings.xml:

<mirror>
    <id>our-mirror</id>
    <name>Org Public Mirror</name>
    <url>http://host/nexus/content/groups/public</url>
    <mirrorOf>*</mirrorOf>
</mirror>

Это приводит к тому, что любой вызов maven переходит к Nexus для получения зависимости. Вы правы в том, что maven сначала смотрит в локальный .m2.

Nexus проксирует множество репозиториев и объединяет их все (для вызывающих его процессов maven). Это означает, что локальный эксперт разработчика знает только об одном репозитории: Nexus. Nexus будет обслуживать все необходимые идентификаторы зависимостей, которые они находятся в одном из своих проксируемых/размещенных репозиториев.

Что касается прокси-сервера, у нас есть прокси-сервер организации, но Nexus находится в организации (у него прокси-сервер настроен на доступ к внешнему миру), поэтому maven не нуждается в этой конкретной конфигурации.

Я надеюсь, что это даст вам некоторую информацию для начала.

Я настоятельно рекомендую вам ознакомиться с конфигурациями, связанными с Nexus/Maven, по адресу: http://www.sonatype.org/.

person Eldad Assis    schedule 06.01.2013

Правильная настройка использования Maven с Nexus описана в книге «Управление репозиторием с Nexus». Образец settings.xml находится здесь . Прочтите описание и обратите внимание, что вам нужно добавить переопределения для центрального репозитория, чтобы включить моментальные снимки.

После того, как вы это сделаете, вы НЕ настроите прокси в своем файле settings.xml, поскольку он будет доступен в вашей локальной сети без прокси (обычно). Вместо этого вы настраиваете параметры прокси в Nexus, чтобы он, в свою очередь, мог получить доступ к репозиториям, таким как Central, которые вы проксируете. Конфигурация глобального прокси задокументирована здесь и при необходимости вы также можете настроить особенности для каждого прокси-репозитория, например. если вам нужно имя пользователя/пароль для репозитория, который вы проксируете, потому что он частный..

person Manfred Moser    schedule 06.01.2013
comment
ссылки кажутся неработающими.. 404 не найдено.. не могли бы вы исправить это, если это возможно.. - person Rajkumar Purushothaman; 30.12.2017