Недавно Задания сборки 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. -> [Справка 2]

Ожидание Jenkins завершения сбора данных [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. -> [Справка 1]

Ответы (28)

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

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

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

Вот даты переключения основных репозиториев:

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

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

Maven История изменений (http://maven.apache.org/docs/3.2.3/release-notes.html)

Попытайтесь попасть по указанному ниже 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:


   
      Central Maven repository
      Central Maven repository https
      https://repo.maven.apache.org/maven2
   

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

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


  central-secure
  https://repo.maven.apache.org/maven2
  central

Для всех корпоративных кодеров в идеале если вы получаете эту ошибку, это означает, что ваша база кода все еще создается сообществом разработчиков ПО с открытым исходным кодом. Вам необходимо обойти "центральный" репозиторий с помощью вашего собственного корпоративного менеджера репозитория Maven.

Вы можете перейти в свой файл settings.xml и переопределить URL-адрес центрального репозитория с http: // на https: //

/conf/settings.xml

Найдите разделы mirrors и добавьте следующую запись:

    
     other-mirror
     Other Mirror Repository
     https://other-mirror.repo.other-company.com/maven2
     central
    

В разделе URL, если вы использовали http://repo1.maven.org/maven2/ или http://repo.maven.apache.org/maven2/, то

Замените http://repo1.maven.org/maven2/ на https://repo1.maven.org/maven2/

Замените http://repo.maven.apache.org/maven2/ на https://repo.maven.apache.org/maven2/

В идеале вам нужно использовать URL-адрес хранилища / управления версиями вашей компании здесь. Поскольку это заблокирует любой контакт с сообществом репозитория Maven с открытым исходным кодом.

Как упоминалось в других ответах, с 15 января 2020 года центральный репозиторий Maven не поддерживает небезопасную связь через простой HTTP.

У меня такая же проблема. Я пробовал два решения, и оба мне подходят.

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

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

Загрузите двоичный файл Apache Maven, который включает адреса https по умолчанию (двоичный файл Apache Maven 3.6.3). И откройте диалоговое окно Параметры в инструментах строки меню NetBeans (Java Maven Dialog View). И выберите опцию просмотра в окне списка Maven Home (Maven Home List Box View). После добавления недавно загруженной версии Apache Maven (Обновленный вид окна списка Maven Home) проект компилируется и запускается успешно.

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

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


      ...
    
        
            central
            Central Repository
            https://repo.maven.apache.org/maven2
            default
            
                false
            
            
                never
            
        
    
    
        
            central
            Central Repository
            https://repo.maven.apache.org/maven2
            default
            
                false
            
        
    

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

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

Решение:

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

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

    <проект>
    ...
      <репозитории>
        <репозиторий>
           центральное репо maven 
           центральное репозиторий maven https 
          https://repo.maven.apache.org/maven2
        
      
    
    
  2. Добавьте репозиторий в профиль в файле settings.xml.

    <профиль>
       мой профиль 
      <репозитории>
        <репозиторий>
           центральное репо maven 
           центральное репозиторий maven https 
          https://repo.maven.apache.org/maven2
          
      
    
    
  3. Обновите версию maven до новой, в которой по умолчанию используются значения https. Самый последний на данный момент 3.6.3 Скачать здесь

Для Gradle:

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

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

Используя Ubuntu 16.04, java 1.8.0_201.

Я удалил старый maven и установил Maven 3.6.3, все еще есть эта ошибка, что зависимости Maven не работают с ошибкой 501.

Понятно, что это может быть проблема с хранилищем доверенных сертификатов / хранилищем ключей, связанная с требованием https. Обнаружено, что теперь вы можете настроить параметры -Djavax с помощью файла jvm.config, см .: https://maven.apache.org/configure.html.

Поскольку я также использую Tomcat, я скопировал конфигурацию хранилища ключей и доверенного хранилища из Tomcat (setenv.sh) в свой jvm.config, и тогда он сработал!

Существует также возможность передать эту конфигурацию в 'export MAVEN_OPTS' (при использовании mvn generate), но, хотя это остановило ошибку 501, она создала другую: он ожидал файл pom.

Создание отдельного файла jvm.config отлично работает, просто поместите его в корень вашего проекта.

Надеюсь, это кому-то поможет, мне потребовался целый день, чтобы разобраться в этом!

Если вы используете старую версию Netbeans, вам необходимо внести изменения в maven, чтобы использовать https поверх http

Откройте C: \ Program Files \ NetBeans8.0.2 \ java \ maven \ conf \ settings.xml и вставьте ниже код между тегами зеркал


maven-mirror
Maven Mirror
https://repo.maven.apache.org/maven2
central

Это заставит maven использовать https://repo.maven.apache.org/maven2 url.

В старой среде Grails единственное, что работает без обновления:

settings.xml

   
    
        
          centralhttps
          central
          Maven central https
          http://insecure.repo1.maven.org/maven2/
        
      
  

Я загрузил последнюю версию netbeans 12.2, и проблема была решена.

• 100001

Оказывается, у меня был старый settings.xml, который находился в папке .m2 / в моем домашнем каталоге с некоторыми изменениями, сделанными много лет назад.

Однако даже удаление этого файла не помогло мне. Я закончил тем, что удалил всю папку .m2.
Не думаю, что в нем было что-то еще, кроме скачанных ресурсов. Возможно, было бы достаточно просто удалить такие папки, как repository / org / apache / maven / archetype.

Меня вытащила следующая ссылка:

https://support.sonatype.com/hc/en-us/articles/360041287334-Central-501-HTTPS-Required

Вы можете внести изменения в свой maven, apache-maven / conf / settings.xml. Или, если вы указываете в своем pom.xml, внесите изменения там.

Раньше,


            maven_central_repo
            http://repo.maven.apache.org/maven2

Сейчас,


            maven_central_repo
            https://repo.maven.apache.org/maven2

Обратите внимание на изменение с http на https

Добавьте это в файл pom.xml. У меня отлично работает


    
        central
        Central Repository
        https://repo.maven.apache.org/maven2
        default
        
            false
        
        
            never
        
    



    
        central
        Central Repository
        https://repo.maven.apache.org/maven2
        default
        
            false
        
    

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

Для меня (корпоративный кодировщик) также добавление зеркального репозитория в settings.xml устранило проблему. Я также использую Maven внутри контейнера докеров.


    
        https-mirror
        Https Mirror Repository
        https://repo1.maven.org/maven2
        central
    

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


    
        central
        Central Repository
        https://repo.maven.apache.org/maven2
        default
        
            false
        
    

Я загрузил последнюю версию eclipse и начал использовать отсюда https://www.eclipse.org/downloads/packages/release/, что решило мою проблему.

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


    
        maven-mirror
        Maven Mirror
        https://repo.maven.apache.org/maven2
        central
    

Моя текущая среда не поддерживает HTTPS, поэтому добавление небезопасной версии репо решило мою проблему: http://insecure.repo1.maven.org согласно Sonatype

    
       
          Central Maven repository
          Central Maven repository insecure
          http://insecure.repo1.maven.org
       
    

Добавьте следующий репозиторий в pom.xml.


...
    
        
            central
            Maven Plugin Repository
            https://repo1.maven.org/maven2
            default
            
                false
            
        
    
...


Как указано в других ответах, https теперь требуется для выполнения запросов к Maven Central, в то время как более старые версии Maven используют http.

Если вы не хотите / не можете обновляться до Maven 3.2.3+, вы можете решить эту проблему, добавив следующий код в свой MAVEN_HOME \ conf \ settings.xml в <профили> раздел:


    maven-https
    
        true
    
    
        
            central
            https://repo1.maven.org/maven2
            
                false
            
        
    
    
        
            central
            https://repo1.maven.org/maven2
            
                false
            
        
     

Это всегда будет активным параметром, если вы не отключите / не переопределите его в своем POM, когда это необходимо.

Исходно из https://stackoverflow.com/a/59796324/32453, хотя это может быть полезно:

Помните, что ваш родительский pom также может (пере) определять репозитории, и если он по какой-либо причине переопределил центральный и указал http, вам нужно это исправить (так что места для исправления: ~ / .m2 / settings. xml И также родительские помпы).

Если вы не можете исправить это в родительском pom, вы можете переопределить репо родительского pom, например, в своем дочернем pom (извлеченном из 3.6.3 по умолчанию super pom, кажется, они изменили имя также из репо1):

  
    
      central
      Central Repository
      https://repo.maven.apache.org/maven2 
      default
      
        false 
      
    
  

Поделиться на случай, если кому-то понадобится:

Старая конфигурация Gradle (без развертываний Gitlab, Docker, для простых проектов)

repositories {
google()
jcenter()

maven { url "http://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://jcenter.bintray.com' }
}

Новый конфиг:

repositories {
google()
jcenter()

maven { url "https://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'https://repo1.maven.org/maven2' }
maven { url 'https://jcenter.bintray.com' }
}

Обратите внимание на https. Удачного кодирования :)

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

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

Я понимаю, что это более специфично для моей установки. Но без выполнения всех вышеперечисленных шагов я все равно буду получать это сообщение об ошибке. Код возврата: 501, ReasonPhrase: Требуется HTTPS

Такая же проблема возникает и для jcenter.

С 13 января 2020 года Jcenter доступен только по HTTPS.

Проекты, получающие свои зависимости, используя то же самое, начнут сталкиваться с проблемами. Для быстрого исправления сделайте следующее в build.gradle

вместо

repositories {
jcenter ()
//others
}

используйте это:

repositories {
jcenter { url "http://jcenter.bintray.com/"}
//others
}

Эта ошибка возникла и у меня. Я сделал то, что сказал выше Мухаммад Умер. Но он решил только ошибку для зависимостей Spring-boot, а у Spring-boot-dependencies есть дочерние зависимости. Теперь была 21 ошибка. Раньше было 2 ошибки. Как это:

Non-resolvable import POM: Could not transfer artifact org.springframework.cloud:spring-cloud-dependencies:pom:Hoxton.SR3 from/to central

, а также https требуется в сообщении об ошибке.

Я обновил версию maven с 3.2.2 до 3.6.3 и версию java с 8 до 11. Теперь все ошибки https исчезли.

Для обновления версии maven

  1. Загрузите последнюю версию maven отсюда: загрузите maven
  2. Разархивируйте и переместите его в / opt / maven /
  3. Установить путь экспорт PATH = $ PATH: / opt / maven / bin
  4. И также удалите старый maven из PATH

Начиная с 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" }
}

Ошибка:

Не удалось передать файл: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom.

Код возврата: 501, ReasonPhrase: Требуется HTTPS.

Анализ первопричин:

Maven central ожидает, что клиенты будут использовать https, но клиент выполняет только простой HTTP-запрос.

Следовательно, запрос на загрузку пакета с именем 'wagon-ssh-2.1.pom' не удался.

Как решить проблему?

Заменить URL "http://repo.maven.apache.org/maven2"

с «https://repo.maven.apache.org/maven2»

в файле pom.xml или build.gradle проекта.

2022 WebDevInsider