Я пытался построить ваш образец pom.xml
с Maven 3.3.9 (и 3.6.0): нет com.mulesoft.muleesb:mule-core:3.6.0:jar
;Наиболее близким кажется org.mule:mule-core:3.6.0
.
Если POM указанной зависимости не найден, Maven выдаст предупреждение и сохранит файл .lastUpdated
.Файл содержит отметку времени, указывающую, когда была выпущена ошибка для некоторого репозитория.
Когда некоторое время прошло между двумя выполнениями или если используется -U
, Maven попытается загрузить зависимость (или его ПОМ).Я думаю, что именно здесь вы и получили свою ошибку.
POM не является обязательным для Maven, он выдает предупреждение:
[WARNING] The POM for com.mulesoft.muleesb:mule-core:jar:3.6.0 is missing, no dependency information available
Однако, когда он пытается загрузить его, он должен по крайней мередо какой-то 404 NOT FOUND
: я использовал какой-то локальный несвязанный IP, и это тоже не удалось:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Test Application 1.0.0
[INFO] ------------------------------------------------------------------------
Downloading: https://192.168.113.145/com/mulesoft/muleesb/mule-core/3.6.0/mule-core-3.6.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.336 s
[INFO] Finished at: 2018-12-27T20:04:11+01:00
[INFO] Final Memory: 10M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project test: Could not resolve dependencies for project com:test:mule:1.0.0: Failed to collect dependencies at com.mulesoft.muleesb:mule-core:jar:3.6.0: Failed to read artifact descriptor for com.mulesoft.muleesb:mule-core:jar:3.6.0: Could not transfer artifact com.mulesoft.muleesb:mule-core:pom:3.6.0 from/to bintray (https://192.168.113.145): Connect to 192.168.113.145:443 [/192.168.113.145] failed: Connection timed out: connect -> [Help 1]
Эта ошибка не такая, как у вас, но это, по крайней мере, более или менее объясняет, почему Maven выбралremote.
Существуют и другие случаи:
- Maven попытается загрузить метаданные плагина из репозиториев, если у плагина / зависимости нет явной версии (это означает «принять последнюю версию»).возможно в ограниченном диапазоне [например: версия maven, транзитивная зависимость ...,).Плагин по умолчанию, например
maven-clean-plugin
, исправлен в версии Maven. - Вы используете
SNAPSHOT
версию, и Maven будет загружать самую последнюю версию (если она не отключена в <repository>
)
При этом, я думаю, что ваша проблема (ваш вопрос) является неправильной:
Но проблема, с которой я сталкиваюсь, заключается в том, что во время этой миграции я обнаружил, что Maven всегда извлекает зависимости из удаленногоиз локального даже у нас есть репозитории, доступные в локальном.
Тот факт, что Maven отказывает, потому что не может найти зависимость удаленно, означает, что в вашей конфигурации ваша сборка не будет работать на другомmachine:
- Ваш репозиторий Nexus (http://127.0.0.1:9080/nexus) не хранит зависимость, что означает, что он не выполняет свое предназначение (наличие корпоративного репозитория - это устранение проблем извне, в первую очередь это удаление илизамена).
- Он должен быть не в
127.0.0.1
, а на отдельном сервере, если ваш прокси-сервер не является корпоративным хранилищем для вашего локального хоста для другие причины;по крайней мере, он должен иметь резервную копию. - Ваш
settings.xml
должен использовать зеркало для этого хранилища (если вы хотите быть уверены, что ваш файл зависимостей / плагин не загружается из внешнего источника).
В частности, если вы измените локальный репозиторий (например, указав <localRepository>
на ~/.m2/repository.fresh
), сборка не должна завершиться сбоем из-за этих отсутствующих зависимостей.