Maven Проверяет локальный репозиторий, но загружает из центрального.Зачем? - PullRequest
4 голосов
/ 25 ноября 2011

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

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)

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

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

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

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

ОБНОВЛЕНИЕ: Что происходило и что я делал:

Ответ ориента объясняет, почему к Maven Central обращались вообще.

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

1 Ответ

7 голосов
/ 27 ноября 2011

Maven может быть настроен с несколькими хранилищами.Добавление репозитория, как у вас в проекте, не делает недействительными любые репозитории, которые вы уже настроили.По умолчанию каждый получает репозиторий в 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.

...