Maven проверяет локальный репозиторий, но загружает из центрального. Почему?


У нас есть локальное хранилище artifactory, настроенное для кэширования. Он настроен в наших проектах, но когда я смотрю на stdout процесса сборки, я вижу строки, подобные этой

Downloading: http://ourserver/artifactory/our-repo/javax/transaction/jta/1.1/jta-1.1-sources.jar
Downloading: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar
Downloaded: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar (25 KB at 54.5 KB/sec)

Таким образом, похоже, что он пытается загрузить jar из локального репозитория и из Maven Central, а затем фактически использует Maven Central).

Если я скопирую url локального репозитория в своем браузере, я получу jar без проблем.

Если я проверю с приложением администратора artifactory I могу увидеть артефакт.

Может ли кто-нибудь объяснить, почему Maven Central вообще используется?

Обновление: что происходило и что я делал:

Ответ Ориен это объясняет, почему в Maven Central был доступен на всех.

Комментарии Mliebelt намекнули мне на мое решение: похоже, наш локальный репозиторий должен был замедлить ответ, когда ему нужно было сначала загрузить артефакт. Я настроил кэш на нетерпеливую загрузку банок и источников, когда pom запрашивается. Это должно уменьшить количество артефактов, загруженных из других источников.
1 4

1 ответ:

Мэйвен может быть настроена для работы с несколькими репозиториями. Добавление репозитория, как это было в вашем проекте,не делает недействительными уже настроенные репозитории. По умолчанию каждый получает хранилище в Maven Central. Затем Maven может бесплатно загрузить артефакт из любого доступного хранилища.

Похоже, что на самом деле вы хотите создатьзеркало . Вы можете настроить mirror в вашем файле settings.xml:

<mirrors>
    <mirror>
        <id>our-server-repo</id>
        <name>our local repository</name>
        <url>http://ourserver/artifactory/our-repo</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

Обратите внимание, что мы использовали подстановочный знак ( * ) в элемент mirrorOf. Это означает, что доступ ко всем репозиториям будет осуществляться по указанному URL-адресу. При такой конфигурации Maven будет иметь доступ только к локальному репозиторию Artifactory.