Maven-зависимости терпят неудачу с ошибкой 501 - PullRequest
156 голосов
/ 16 января 2020

В последнее время 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]

Ожидание Дженкинс до финиша sh сбор 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 из / в центральный (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]

Ответы [ 19 ]

130 голосов
/ 16 января 2020

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

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

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

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

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

Обновление: похоже на Maven 3.2.3 Доступ к maven central осуществляется по HTTPS. См. { ссылка }

Maven Change журнал (http://maven.apache.org/docs/3.2.3/release-notes.html)

63 голосов
/ 17 января 2020

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

  • Обновление репозитория версий Maven (версия Maven> = 3.2.3)
  • Ограничение текущей версии Maven используйте ссылки HTTPS.

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

Загрузите двоичный файл Apache Maven, который включает в себя адреса https по умолчанию (* 1034) * Maven 3.6.3 бинарный ). И откройте диалоговое окно Параметры в инструментах строки меню NetBeans (Java Просмотр диалогов Maven ). И выберите опцию просмотра в Maven Home List Box ( Maven Home List Box View ). После добавления только что загруженной версии 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>
36 голосов
/ 16 января 2020

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

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

( source )

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

Старый:

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

Новый:

repositories {
   maven { url "https://repo.maven.apache.org/maven2" }
}
28 голосов
/ 16 января 2020

Попробуйте нажать на ссылку ниже в любом браузере. Он вернет 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) в настройках. xml файл:

<repositories>
   <repository>
      <id>Central Maven repository</id>
      <name>Central Maven repository https</name>
      <url>https://repo.maven.apache.org/maven2</url>
   </repository>
</repositories>
22 голосов
/ 16 января 2020

Обновите центральное хранилище Maven и используйте https вместо http .

<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>
16 голосов
/ 16 января 2020

Я использовал чистую установку Maven / Java для контейнера Docker.

Для меня мне пришлось cd $M2_HOME/conf и отредактировать файл settings.xml там. Добавьте следующий блок внутрь <mirrors>...</mirrors>

<mirror>
  <id>central-secure</id>
  <url>https://repo.maven.apache.org/maven2</url>
  <mirrorOf>central</mirrorOf>
</mirror>
13 голосов
/ 16 января 2020

Я использовал устаревшую версию Maven (3.0.3 и 3.1). Эти старые версии больше не поддерживают http-репозитории (как упомянуто выше). Обновление до Maven 3.6 было для меня исправлением.

12 голосов
/ 17 января 2020

Maven переходит на HTTPS и отключает доступ HTTP

Краткая история: с 15 января 2020 года репозиторий Maven Central больше не поддерживает HTTP-соединения (другие репозитории делают то же самое) , Поэтому вы будете указывать настройки Maven / Gradle для использования HTTPS URL.

Решение:

Вы можете выбрать один из следующих трех подходов.

  1. Добавить репозиторий в файл pom.xml вашего проекта

    <project>
    ...
      <repositories>
        <repository>
          <id>central maven repo</id>
          <name>central maven repo https</name>
          <url>https://repo.maven.apache.org/maven2</url>
        </repository>
      </repositories>
    </project>
    
  2. Добавить репозиторий в профиль в settings.xml файл.

    <profile>
      <id>my profile</id>
      <repositories>
        <repository>
          <id>central maven repo</id>
          <name>central maven repo https</name>
          <url>https://repo.maven.apache.org/maven2</url>
          </repository>
      </repositories>
    </profile>
    
  3. Обновите версию maven до новой версии, в которой по умолчанию используются значения https. Самый последний на данный момент 3.6.3 Скачать здесь

Для Gradle:

Заменить только URL для версии HTTPS.

repositories {
   maven { url "https://repo.maven.apache.org/maven2" }
}
10 голосов
/ 25 января 2020

Я добавил следующий сегмент кода в настройку. xml и проблема была решена,

<mirrors>
    <mirror>
        <id>maven-mirror</id>
        <name>Maven Mirror</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>
9 голосов
/ 16 января 2020

У меня та же проблема, но я использую GitLab вместо Jenkins. Шаги, которые я должен был сделать, чтобы обойти проблему:

  1. Мой проект находится в GitLab, поэтому он использует файл .yml, который указывает на изображение Docker, которое я должен сделать непрерывной интеграцией, и Используемое изображение имеет URL-адреса http://maven. Поэтому я изменил это значение на https://maven.
  2. В том же образе Dockerfile была более старая версия Maven 3.0.1, из-за которой у меня возникали проблемы в одночасье. Я обновил Dockerfile, чтобы получить последнюю версию 3.6.3
  3. Затем я развернул этот образ в своем онлайн-хранилище и обновил свой yml-файл проекта Maven, чтобы использовать этот новый образ.
  4. И, наконец, я обновил POM-файл моих основных проектов по ссылке https://maven ... вместо http://maven

Я понимаю, что это более конкретно c для моей настройки. Но не выполнив все вышеперечисленные шаги, я все равно продолжаю получать это сообщение об ошибке Return code is: 501 , ReasonPhrase:HTTPS Required

...