Как установить порядок репозиториев в Maven settings.xml

У меня есть 3 репозитория в моем файле settings.xml, потому что мне нужны артефакты из всех них. Всякий раз, когда зависимость не найдена, Maven пытается

Downloading: http://some.server/mvn2repo/releases/org/apache/lucene/lucene-core/2.9.1/...
[INFO] Unable to find resource 'org.apache.lucene:lucene-core:pom:2.9.1' in repository
Downloading: http://some.server/mvn2repo/3rdParty/org/apache/lucene/lucene-core/2.9.1/...
[INFO] Unable to find resource 'org.apache.lucene:lucene-core:pom:2.9.1' in repository
Downloading: http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/2.9.1/lucene-core-2.9.1.pom
<success>

во всех репозиториях, но в большинстве случаев артефакт, конечно, находится в центральном (repo1). Я хочу, чтобы Maven сначала проверил этот репозиторий. Я пробовал порядок объявлений в settings.xml, но не работал. Согласно fgysin, я также попробовал обратный порядок, который ничего не изменил.

Моя версия Maven:

C:\>mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.6.0_15
Java home: C:\Program Files\Java\jdk1.6.0_15\jre
Default locale: de_AT, platform encoding: Cp1252
OS name: "windows vista" version: "6.0" arch: "amd64" Family: "windows"

My settings.xml

<profiles>
    <profile>
        <id>space</id>
        <repositories>
            <repository>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>s1-releases</id>
                <name>System One Releases</name>
                <url>http://some.server/mvn2repo/releases</url>
            </repository>
            <repository>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>s1-3rdParty</id>
                <name>System One 3rd Party Releases</name>
                <url>http://some.server/mvn2repo/3rdParty</url>
            </repository>
            <repository>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <id>central</id>
                <url>http://repo1.maven.org/maven2</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <id>central</id>
                <url>http://repo1.maven.org/maven2</url>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>space</activeProfile>
</activeProfiles>

person Peter Kofler    schedule 16.03.2011    source источник
comment
Давайте проголосуем за следующие проблемы: jira.codehaus.org/browse/MNG-4946 и jira.codehaus.org/browse/MNG-4400   -  person Hendy Irawan    schedule 27.05.2013
comment
Просто выберите рабочий репозиторий и only настройте его...   -  person smwikipedia    schedule 12.12.2015
comment
@HendyIrawan похоже, что MNG-4400 был исправлен с помощью maven 3.0 FWIW.   -  person rogerdpack    schedule 10.05.2016
comment
это обновленная ссылка на проблему   -  person Boris Daich    schedule 19.08.2017
comment
Обновлены ссылки на проблемы issues.apache.org/jira/browse/MNG-4400 и issues.apache.org/jira/browse/MNG-4946   -  person DJDaveMark    schedule 05.02.2020


Ответы (3)


Насколько я знаю, порядок репозиториев в вашем pom.xml также определяет порядок доступа к репозиторию.

Что касается настройки репозиториев в settings.xml, я читал, что порядок репозиториев, что интересно, является обратным порядком доступа к репозиториям.

Вот пост, где кто-то объясняет это любопытство:
http://community.jboss.org/message/576851

person fgysin    schedule 16.03.2011
comment
Ваша ссылка выглядит многообещающе, и я попытался изменить порядок, но это не помогает. - person Peter Kofler; 16.03.2011
comment
Хм, странно. Какую версию Maven вы используете? - person fgysin; 17.03.2011
comment
Действительно, в новом проекте порядок таков: 1) активные профили по убыванию (обратное) И затем 2) репозитории по возрастанию. Таким образом, центральное должно быть первым репо в последнем активированном профиле. - person Peter Kofler; 08.05.2011
comment
Это не обратный порядок. Вы должны указать локальное репо первым в теге ‹repositories›. - person vsingh; 12.02.2015

Ни один из этих ответов не был правильным в моем случае... порядок, кажется, зависит от алфавитного порядка тега ‹id›, который представляет собой произвольную строку. Отсюда этот принудительный порядок поиска репо:

            <repository>
                <id>1_maven.apache.org</id>
                <releases>  <enabled>true</enabled>  </releases>
                <snapshots> <enabled>true</enabled> </snapshots>
                <url>https://repo.maven.apache.org/maven2</url>
                <layout>default</layout>
            </repository>

            <repository>
                <id>2_maven.oracle.com</id>
                <releases>  <enabled>true</enabled>  </releases>
                <snapshots> <enabled>false</enabled> </snapshots>
                <url>https://maven.oracle.com</url>
                <layout>default</layout>
            </repository>
person Frank Carnovale    schedule 23.01.2017
comment
Должно быть, это был какой-то определенный (с ошибками?) диапазон версий maven. У меня есть maven 3.6, и это порядок, указанный в принятом ответе. - person sjngm; 16.04.2019
comment
да, я думаю, что это была ошибка: issues.apache.org/jira/browse/MNG -4400 после Maven 3.0 он читается в правильном объявленном порядке - person Rhubarb; 01.06.2020

Кроме того, рассмотрите возможность использования диспетчера репозиториев, такого как Nexus, и настройте все свои репозитории там.

person Puce    schedule 16.03.2011
comment
Почему вы не можете его использовать? Если это связано с тем, что вы не можете обслуживать собственный сервер, попробуйте Artifactory Online. , вы получите облачный репозиторий Maven за считанные минуты. - person JBaruch; 06.08.2013