(Этот вопрос также задается в списке рассылки пользователей Maven)
Недавно я столкнулся со странной проблемой, которую я даже не могу судить о причине или источнике проблемы. Было бы здорово, если бы кто-то дал мне какое-то указание:
(История может быть немного длинной)
Я использую Nexus 1.8.0 в качестве менеджера репозитория нашей компании. Я использую его в качестве прокси внешнего репо и хостинга нашего собственного репозитория.
В Nexus есть много хранилищ. У меня есть одна группа репозиториев (назовем это PUBLIC ), которая группирует все публичные репозитории, включая maven central, codehaus и т. Д.
Существует еще одна группа хранилищ (назовем ее EXT ), в которую мы помещаем сторонние артефакты.
В нашем проекте мы использовали org.codehaus.mojo:native2ascii-maven-plugin
.
Из-за ошибки в то время, вместо использования общедоступного org.codehaus.mojo:native2ascii-maven-plugin:1.0-alpha-1
, я исправил ошибку и развернул ее в нашем репозитории EXT и назвал ее org.codehaus.mojo:native2ascii-maven-plugin:1.0-alpha-1.1
(то есть использовал новый номер версии 1.0-alpha-1.1
вместо 1.0-alpha-1
)
Это нормально работает уже несколько лет.
Однако недавно новый разработчик пытается получить код и собрать его, используя Maven 2.2.1. Произошли странные вещи: сборка не удалась. Проверяя результат чистой установки mvn -X, он утверждает, что POM native2ascii-maven-plugin:1.0-alpha-1.1
не может быть загружен из PUBLIC , поэтому он будет использовать emtpy POM по умолчанию, что вызывает проблему сборки.
Проверяя локальный репозиторий, я обнаружил, что был загружен только JAR-файл native2ascii-maven-plugin:1.0-alpha-1.1
. Я уверен, что в PUBLIC репозитории нет native2ascii-maven-plugin:1.0-alpha-1.1
, а SHA JAR совпадает с native2ascii-maven-plugin:1.0-alpha-1.1
в EXT . Кажется, что Maven способен правильно загрузить JAR из репозитория EXT , но когда он пытается загрузить POM впоследствии, Maven ошибочно считает, что его следует загрузить из PUBLIC . Поскольку PUBLIC не содержит 1.0-alpha-1.1
, Maven предполагает, что POM отсутствует.
В моем файле settings.xml задано репо EXT до PUBLIC . Что еще более странно, я пытался заблокировать доступ в Nexus для native2ascii-maven-plugin
из PUBLIC . Maven, вместо получения POM из репозитория EXT , он получает напрямую из central . Наконец, я добавляю PUBLIC в качестве зеркала для central , и Maven может строить правильно, потому что EXT является единственным репо, содержащим native2ascii-maven-plugin
. Maven, похоже, пытается загрузить POM из каждого репозитория, который содержит native2ascii-maven-plugin
несмотря на номер версии, кроме EXT
Я просто не могу понять, почему это произойдет. Это использовалось в течение многих лет, и это было хорошо даже несколько недель назад (у меня есть другие новые разработчики, которые могут правильно загрузить плагин, несколько недель назад). Кто-нибудь может подсказать мне возможную причину проблемы? Я ничего не изменил в своем репо и не изменил версию Maven. Почему поведение загрузки Maven внезапно изменилось?