maven не может найти зависимости [dependencyResolutionException]
В моем pom.xml
я имею
<repositories>
<repository>
<id>rep</id>
<name>Repository</name>
<url>http://artifacts.com/rep</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.project.rest</groupId>
<artifactId>common</artifactId>
<version>2.0.5</version>
</dependency>
</dependencies>
И у меня есть эта ошибка
Downloading: http://artifacts.com/rep/com/project/rest/common/2.0.5/common-2.0.5.pom
[WARNING] The POM for com.project.rest:common:jar:2.0.5 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.154s
[INFO] Finished at: Tue Feb 03 06:58:35 BRT 2015
[INFO] Final Memory: 9M/152M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project server: Could not resolve dependencies for project org.server:
server:jar:2.5.1-SNAPSHOT: The following artifacts could not be resolved: com.project.rest:common:jar:2.0.5:
Could not find artifact com.project.rest:common:jar:2.0.5 in rep (http://artifacts.com/rep) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
PS Я спрятал все настоящие URL и пакеты.
В основном это показывает, что он может скачать .pom
но также он отображает предупреждение.
В чем проблема?
6 ответов
Убедитесь, что ваш репозиторий настроен правильно. Попробуйте найти в своем репо com.project.rest:common
версии 2.0.5
,
Это ваш собственный проект? какую банку вы построили? Вы уверены, что развернули его в своем репо? если его нет в вашем репо, попробуйте найти его в вашем локальном репо (обычно .m2 / repository/ com / project...)
В первой строке "Загрузка:..." только говорится, что maven пытается загрузить артефакт. Это не утверждение об успехе. Если Maven успешен, вы получите другую строку, начинающуюся с "Downloaded:..."
Таким образом, в вашем случае Maven не смог загрузить файл. Проверьте зарегистрированный URL в вашем браузере, если он существует и защищен ли он.
КСТАТИ <updatePolicy>always</updatePolicy>
довольно редко для репозиториев релизов, потому что релизы больше не должны меняться.
DependencyResolutionException
(источник: Maven Confluence)
Эта ошибка обычно возникает, когда Maven не может загрузить зависимости. Возможные причины этой ошибки:
- POM пропускает декларацию
<repository>
где находится артефакт. - Для настроенного хранилища требуется проверка подлинности, и Maven не смог предоставить правильные учетные данные серверу. В этом случае убедитесь, что ваш
${user.home}/.m2/settings.xml
содержит<server>
декларация которого<id>
соответствует<id>
удаленного хранилища для использования. См. Справочник настроек Maven для более подробной информации. - Рассматриваемый удаленный репозиторий использует SSL, а JVM, на которой работает Maven, не доверяет сертификату сервера.
- Существует общая проблема с сетью, которая препятствует доступу Maven к любому удаленному репозиторию, например, к отсутствующей конфигурации прокси.
- Вы настроили Maven для строгой проверки контрольной суммы, и загружаемые файлы были повреждены.
- Maven не удалось сохранить файлы в вашем локальном хранилище, см.
LocalRepositoryNotAccessibleException
Больше подробностей. - В Maven 3, если вы только что потерпели неудачную загрузку и исправили ее (например, загрузив jar-файл в репозиторий), он будет кешировать ошибку. Для принудительного обновления добавить
-U
в командной строке.
В случае общей проблемы, связанной с сетью, вы также можете обратиться к следующим статьям:
Если вы используете IntelliJ IDE (Jetbrains) и код правильный, тогда
Нажмите кнопку ПЕРЕКЛЮЧИТЬ АВТОНОМНЫЙ РЕЖИМ. Если мы включим автономный режим, то IDE не позволит maven загрузить зависимость и не сможет найти библиотеку, которая вызывает ошибку.
Поэтому убедитесь, что ваш проект построен в режиме ONLINE.
Проект, который вы упомянули, не содержит POM, то есть это не проект MAVEN. Репозиторий.m2(посмотрите на диск c или там, где вы его установили) содержит все папки зависимостей, где он находится, содержит ли он требуемый проект или нет, т.е. com.project.rest.
Как и предлагается в выводе консоли, вы можете проверить страницу Maven Wiki ( http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException) для получения дополнительной информации о том, где может лежать проблема.
Учитывая предоставленную вами информацию. Я предполагаю, что мы смотрим на одну проблему:POM пропускает объявление, на котором размещен артефакт.
Репозитории Maven бывают трех типов: локальные, центральные и удаленные.
В вашем случае ваш локальный репозиторий содержит специфические для проекта артефакты, а центральный репозиторий - нет.
- Локальный репозиторий находится на вашем локальном компьютере. Когда вы запускаете сборку Maven, Maven автоматически загружает все jar-файлы зависимостей в локальный репозиторий.
- Центральный репозиторий - это веб-репозиторий, предоставляемый сообществом, и он содержит ряд часто используемых библиотек, которые можно найти здесь https://repo1.maven.org/maven2/.
- Удаленный репозиторий - это собственный настраиваемый репозиторий разработчика, содержащий необходимые библиотеки или другие jar-файлы проекта. Разработчик определяет эти репозитории в файле POM с помощью тегов.
Я бы посоветовал следующее:
- проверьте тег вашего репозитория, если репозиторий правильный
- проверьте, содержит ли репозиторий артефакты, указанные в вашем теге зависимости