Вопрос-ответ

Maven dependencies are failing with a 501 error

Зависимости Maven завершаются сбоем с ошибкой 501

Недавно в заданиях сборки Maven, запущенных в Jenkins, произошел сбой с приведенным ниже исключением, в котором говорится, что они не смогли извлечь зависимости из Maven Central и должны использовать HTTPS. Я не уверен, как изменить запросы с HTTP на HTTPS. Кто-нибудь может подсказать мне по этому вопросу?


[ОШИБКА] Неразрешимое расширение сборки: не удалось разрешить
плагин org.apache.maven.wagon:wagon-ssh:2.1 или одну из его зависимостей:
Не удалось собрать зависимости для org.apache.maven.wagon:wagon-ssh:jar:2.1 ():
Не удалось прочитать дескриптор артефакта для org.apache.maven.wagon:wagon-ssh:jar:2.1:
Не удалось передать артефакт org.apache.maven.wagon:wagon-ssh:pom:2.1 из / в центральный (http://repo.maven.apache.org/maven2):
Не удалось передать файл: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom.
Код возврата: 501, ReasonPhrase:HTTPS Required. -> [Help 2]


Ожидание, пока Дженкинс завершит сбор данных data[ERROR]
Не удалось разрешить плагин org.apache.maven.plugins:maven-clean-plugin:2.4.1 или одну из его зависимостей:
Не удалось прочитать дескриптор артефакта дляorg.apache.maven.plugins:maven-clean-plugin:jar:2.4.1:
Не удалось передать артефакт org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1 из / в central (http://repo.maven.apache.org/maven2):
Не удалось передать файл: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom .
Код возврата: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]


Переведено автоматически
Ответ 1

Причина наблюдаемой ошибки объясняется в Требуется центральный протокол HTTPS 501


С 15 января 2020 года Центральный репозиторий больше не поддерживает небезопасную связь по обычному HTTP и требует, чтобы все запросы к репозиторию шифровались по протоколу HTTPS.


Похоже, что последние версии Maven (пробованные с 3.6.0, 3.6.1) уже используют URL HTTPS по умолчанию.

Вот даты, когда будут переключены основные репозитории:

Ваши сборки Java могут прерваться, начиная с 13 января (если вы еще не переключили доступ репозитория на HTTPS)

Обновление: Похоже, что из maven 3.2.3 доступ к maven central осуществляется через HTTPS, см. https://javalang.ru/a/25411658/5820670

Журнал изменений Maven (http://maven.apache.org/docs/3.2.3/release-notes.html)

Ответ 2

Я сталкиваюсь с той же проблемой. Есть два решения, которые я пробовал, и оба у меня отлично работают.


  • Обновите репозиторий версий Maven (версия Maven > = 3.2.3)

  • Ограничьте текущую версию Maven использованием HTTPS-ссылок.

Обновите репозиторий версий Maven:

Загрузите двоичный файл Apache Maven, который включает https-адреса по умолчанию (двоичный файл Apache Maven 3.6.3). И откройте диалоговое окно параметров в панели меню "Инструменты" NetBeans (диалоговое окно Java Maven). И выберите опцию просмотра в окне "Домашний список Maven" (Просмотр окна "Домашний список Maven"). После добавления недавно загруженной версии Apache Maven (обновленное представление домашнего списка Maven) проект успешно собран и запущен.

Ограничьте текущую версию Maven использованием HTTPS-ссылок:

Включите следующий код в pom.xml вашего проекта.

<project>
...
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
Ответ 3

С 15 января 2020 года Центральный репозиторий больше не поддерживает небезопасную связь по обычному HTTP и требует, чтобы все запросы к репозиторию шифровались по HTTPS.


Если вы получаете эту ошибку, то вам необходимо заменить все URL-ссылки на Maven Central их каноническими аналогами HTTPS.


(источник)

Мы внесли следующие изменения в build.gradle моего проекта:

Старый:

repositories {
maven { url "http://repo.maven.apache.org/maven2" }
}

Новое:

repositories {
maven { url "https://repo.maven.apache.org/maven2" }
}
Ответ 4

Попробуйте перейти по указанному ниже URL-адресу в любом браузере. Он вернет 501

http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

Пожалуйста, попробуйте с https. Он загрузит pom.xml файл:

https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

Пожалуйста, добавьте это (https://repo.maven.apache.org/maven2) в setting.xml файл:

<repositories>
<repository>
<id>Central Maven repository</id>
<name>Central Maven repository https</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
java maven