Recientemente, los trabajos de compilación de Maven que se ejecutan en Jenkins están fallando con la siguiente excepción que dice que no pudieron extraer dependencias de Maven Central y deberían usar HTTPS . No estoy seguro de cómo cambiar las solicitudes de HTTP a HTTPS . ¿Alguien podría orientarme en este asunto?
[ERROR] Extensión de compilación irresoluble:
No se pudo resolver el complementoorg.apache.maven.wagon:wagon-ssh:2.1o una de sus dependencias:
No se pudieron recopilar las dependencias paraorg.apache.maven.wagon:wagon-ssh:jar:2.1 ():
No se pudo leer el descriptor del artefacto paraorg.apache.maven.wagon:wagon-ssh:jar:2.1:
No se pudo transferir el artefactoorg.apache.maven.wagon:wagon-ssh:pom:2.1de/a central ( http://repo.maven.apache.org/maven2 ):
Error al transferir el archivo: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom .
El código de retorno es:501, ReasonPhrase:HTTPS Required. -> [Help 2]Esperando a que Jenkins termine de recopilar
data[ERROR]
No se pudo resolver el complementoorg.apache.maven.plugins:maven-clean-plugin:2.4.1o una de sus dependencias:
No se pudo leer el descriptor del artefacto paraorg.apache.maven.plugins:maven-clean-plugin:jar:2.4.1:
No se pudo transferir el artefactoorg.apache.maven.plugins:maven-clean-plugin:pom:2.4.1de/a central ( http://repo.maven.apache.org/maven2 ):
Error al transferir el archivo: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom .
El código de retorno es:501 , ReasonPhrase:HTTPS Required. -> [Help 1]
El siguiente enlace me sacó del apuro,
https://support.sonatype.com/hc/en-us/articles/360041287334-Central-501-HTTPS-Required
Puede realizar los cambios en su maven, apache-maven/conf/settings.xml. O, si está especificando en su pom.xml, realice el cambio allí.
Antes,
<repository> <id>maven_central_repo</id> <url>http://repo.maven.apache.org/maven2</url> </repository>Ahora,
<repository> <id>maven_central_repo</id> <url>https://repo.maven.apache.org/maven2</url> </repository>Tenga en cuenta el cambio de http a https
A mi tambien me paso este error. Hice lo que dijo Muhammad umer arriba. Pero, solo resolvió el error para las dependencias de arranque de primavera y las dependencias de arranque de primavera tienen dependencias secundarias. Ahora, hubo 21 errores. Anteriormente, eran 2 errores. Me gusta esto:
Non-resolvable import POM: Could not transfer artifact org.springframework.cloud:spring-cloud-dependencies:pom:Hoxton.SR3 from/to centraly también se requiere https en el mensaje de error.
Actualicé la versión maven de 3.2.2 a 3.6.3 y la versión java de 8 a 11. Ahora, todos los errores de https requeridos desaparecieron.
Para actualizar la versión de maven
/opt/maven/export PATH=$PATH:/opt/maven/binEncontré este problema con la última versión (agosto de 2020) (después de no usar Maven en esta máquina durante mucho tiempo) y me preguntaba por qué todavía podría ser un problema después de leer estas respuestas.
Resulta que tenía un antiguo archivo settings.xml en la carpeta .m2/ de mi directorio de inicio con algunas personalizaciones de hace años.
Sin embargo, incluso eliminar ese archivo no me solucionó el problema. Terminé eliminando toda la carpeta .m2 .
No creo que haya nada más en él, excepto los recursos descargados. Tal vez simplemente borrar carpetas como repository/org/apache/maven/archetype hubiera sido suficiente.
Descargué la última versión 12.2 de netbeans y el problema se resolvió.
En un entorno antiguo de griales, lo único que funciona sin actualizar es:
configuración.xml
<settings> <mirrors> <mirror> <id>centralhttps</id> <mirrorOf>central</mirrorOf> <name>Maven central https</name> <url>http://insecure.repo1.maven.org/maven2/</url> </mirror> </mirrors> </settings>Originalmente de https://stackoverflow.com/a/59796324/32453 aunque esto podría ser útil:
Tenga en cuenta que su pom principal también puede (re)definir repositorios, y si ha anulado el http central y especificado por cualquier motivo, deberá corregirlo (así que lugares para corregir: ~/.m2/settings.xml Y también pompones de los padres).
Si no puede arreglarlo en el pom principal, puede anular el repositorio del pom principal, así, en su pom secundario (extraído del super pom predeterminado 3.6.3, parece que también cambiaron el nombre de repo1):
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <!-- the https you've been looking for --> <layout>default</layout> <snapshots> <enabled>false</enabled> <!-- or set to true if desired, default is false --> </snapshots> </repository> </repositories>Si está utilizando la versión anterior de Netbeans, debe realizar cambios en maven para usar https sobre http
Abra C:\Program Files\NetBeans8.0.2\java\maven\conf\settings.xml y pegue el siguiente código entre la etiqueta de espejos
<mirror> <id>maven-mirror</id> <name>Maven Mirror</name> <url>https://repo.maven.apache.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror>Obligará a maven a usar https://repo.maven.apache.org/maven2 url.
Descargué el último eclipse y comencé a usarlo desde aquí https://www.eclipse.org/downloads/packages/release/ que resolvió mi problema.
Agregue esto en el archivo pom.xml. Funciona bien para mí
<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>Intente presionar la siguiente URL en cualquier navegador. Volverá 501
http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom
Intente con https. Descargará un archivo pom.xml:
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom
Agréguelo ( https://repo.maven.apache.org/maven2 ) en el archivo 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>A partir del 15 de enero de 2020, el Repositorio central ya no admite la comunicación no segura a través de HTTP simple y requiere que todas las solicitudes al repositorio se cifren a través de HTTPS .
Si recibe este error, debe reemplazar todas las referencias de URL a Maven Central con sus homólogos HTTPS canónicos.
( fuente )
Hemos realizado los siguientes cambios en build.gradle de mi proyecto:
Viejo:
repositories { maven { url "http://repo.maven.apache.org/maven2" } }Nuevo:
repositories { maven { url "https://repo.maven.apache.org/maven2" } }El motivo del error observado se explica en Central 501 HTTPS requerido
A partir del 15 de enero de 2020, el Repositorio central ya no admite la comunicación insegura a través de HTTP simple y requiere que todas las solicitudes al repositorio se cifren a través de HTTPS.
Parece que las últimas versiones de Maven (probado con 3.6.0, 3.6.1) ya están usando la URL HTTPS de forma predeterminada.
Estas son las fechas en las que cambiarán los repositorios principales:
Actualización: parece que desde maven 3.2.3 se accede a maven central a través de HTTPS Ver https://stackoverflow.com/a/25411658/5820670
Registro de cambios de Maven ( http://maven.apache.org/docs/3.2.3/release-notes.html )
Para todos los codificadores corporativos, idealmente, si recibe este error, significa que su base de código aún se está construyendo a partir de una comunidad de código abierto. Debe anular el repositorio "central" con el administrador de repositorio Maven de su empresa interna.
Puede ir a su configuración.xml y anular la URL de su repositorio central de http:// a https://
<M2_HOME>/conf/settings.xmlBusque las secciones de espejos y agregue la siguiente entrada:
<mirror> <id>other-mirror</id> <name>Other Mirror Repository</name> <url>https://other-mirror.repo.other-company.com/maven2</url> <mirrorOf>central</mirrorOf> </mirror>En la sección URL, si estaba usando http://repo1.maven.org/maven2/ o http://repo.maven.apache.org/maven2/ entonces
Reemplace http://repo1.maven.org/maven2/ con https://repo1.maven.org/maven2/
Reemplace http://repo.maven.apache.org/maven2/ con https://repo.maven.apache.org/maven2/
Idealmente, debe usar la URL de administración/repositorio de control de fuente de su empresa aquí. Como esto bloqueará cualquier contacto con la comunidad de repositorio Maven de código abierto.
Como se mencionó en otras respuestas, a partir del 15 de enero de 2020, el repositorio central de Maven no admite la comunicación insegura a través de HTTP simple.
Actualice el repositorio central de Maven y use https en lugar de 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>Estaba usando una versión obsoleta de Maven (3.0.3 y 3.1). Estas versiones anteriores ya no admiten repositorios http (como se mencionó anteriormente). Actualizar a Maven 3.6 fue la solución para mí.
Agregue el siguiente repositorio en pom.xml .
<project> ... <repositories> <repository> <id>central</id> <name>Maven Plugin Repository</name> <url>https://repo1.maven.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> ... </project>Estaba usando una instalación limpia de Maven/Java en un contenedor Docker.
Para mí, tuve que cd $M2_HOME/conf y editar el archivo settings.xml allí. Agrega el siguiente bloque dentro de <mirrors>...</mirrors>
<mirror> <id>central-secure</id> <url>https://repo.maven.apache.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror>Tengo el mismo problema, pero uso GitLab en lugar de Jenkins. Los pasos que tuve que hacer para superar el problema:
Me doy cuenta de que es más específico para mi configuración. Pero sin realizar todos los pasos anteriores, continuaría recibiendo este mensaje de error. Return code is: 501 , ReasonPhrase:HTTPS Required
Maven se muda a HTTPS y deshabilita el acceso HTTP
En pocas palabras, desde el 15 de enero de 2020, el repositorio de Maven Central ya no admite conexiones HTTP (otros repositorios están haciendo lo mismo). Por lo tanto, indicará su configuración de Maven/Gradle para usar una URL HTTPS.
Solución:
Puede elegir uno de los siguientes tres enfoques.
Agrega un repositorio en el archivo pom.xml de tu proyecto
<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> Agregue el repositorio a un perfil en el archivo 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>Para Gradle:
Solo reemplace la URL para la versión HTTPS.
repositories { maven { url "https://repo.maven.apache.org/maven2" } }Estoy enfrentando el mismo problema. Hay dos soluciones que probé, y ambas funcionan bien para mí.
Actualice el repositorio de versiones de Maven:
Descargue el binario de Apache Maven que incluye las direcciones https predeterminadas ( binario de Apache Maven 3.6.3 ). Y abra la ventana de diálogo Opciones en las herramientas de la barra de menú de NetBeans ( Vista de diálogo de Java Maven ). Y seleccione la opción de exploración en el cuadro de lista de inicio de Maven (Vista de cuadro de lista de inicio de Maven ). Después de agregar la versión recién descargada de Apache Maven ( Vista de cuadro de lista de inicio de Maven actualizada ), el proyecto se compila y ejecuta correctamente.
Restrinja la versión actual de Maven para usar enlaces HTTPS:
Incluya el siguiente código en pom.xml de su proyecto.
<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>Como se indicó en otras respuestas, ahora se requiere https para realizar solicitudes a Maven Central, mientras que las versiones anteriores de Maven usan http .
Si no desea/no puede actualizar a Maven 3.2.3+, puede solucionarlo agregando el siguiente código en su MAVEN_HOME\conf\settings.xml en la sección <profiles> :
<profile> <id>maven-https</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>Esta será siempre una configuración activa a menos que la deshabilite/anule en su POM cuando sea necesario.
Para mí (codificador corporativo), también se solucionó el problema al agregar un repositorio espejo en la settings.xml . También estoy usando Maven dentro de un contenedor docker.
<mirrors> <mirror> <id>https-mirror</id> <name>Https Mirror Repository</name> <url>https://repo1.maven.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>Usando Ubuntu 16.04, java 1.8.0_201.
Desinstalé el viejo maven e instalé Maven 3.6.3, todavía recibí este error de que las dependencias de Maven están fallando con un error 501.
Me di cuenta de que podría ser un problema de almacén de confianza/almacén de claves asociado con el requisito de https. Descubrí que ahora puede configurar las opciones -Djavax usando un archivo jvm.config, consulte: https://maven.apache.org/configure.html .
Como también estoy usando Tomcat, copié la configuración del almacén de claves y el almacén de confianza de Tomcat (setenv.sh) a mi jvm.config y luego ¡funcionó!
También hay una opción para pasar esta configuración en 'exportar MAVEN_OPTS' (al usar mvn generar) pero aunque esto detuvo el error 501, creó otro: esperaba un archivo pom.
La creación de un archivo jvm.config separado funciona perfectamente, simplemente colóquelo en la raíz de su proyecto.
Espero que esto ayude a alguien, ¡me tomó todo el día resolverlo!
El mismo problema también está ocurriendo para jcenter .
Desde el 13 de enero de 2020 en adelante, Jcenter solo está disponible en HTTPS.
Los proyectos que obtengan sus dependencias usando lo mismo comenzarán a enfrentar problemas. Para soluciones rápidas, haga lo siguiente en su build.gradle
en lugar de
repositories { jcenter () //others }utilizar esta:
repositories { jcenter { url "http://jcenter.bintray.com/"} //others }Me agregaron el siguiente segmento de código a setting.xml y se resolvió el problema,
<mirrors> <mirror> <id>maven-mirror</id> <name>Maven Mirror</name> <url>https://repo.maven.apache.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>Comparto esto por si alguien lo necesita:
Configuración antigua de Gradle (sin Gitlab, implementaciones de Docker, para proyectos simples)
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' } }Nueva configuración:
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' } }Observe el https. Feliz codificación :)
El error:
Error al transferir el archivo: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom .
El código de retorno es: 501 , ReasonPhrase:HTTPS Obligatorio.
Análisis de raíz de la causa:
Maven central espera que los clientes usen https, pero el cliente solo realiza una solicitud HTTP simple.
Por lo tanto, la solicitud para descargar el paquete llamado 'wagon-ssh-2.1.pom' falló.
¿Como solucionar el problema?
Reemplace la URL " http://repo.maven.apache.org/maven2 "
con " https://repo.maven.apache.org/maven2 "
en el archivo pom.xml o en el archivo build.gradle del proyecto.
Mi entorno actual no admite HTTPS, por lo que agregar la versión insegura del repositorio resolvió mi problema: http://insecure.repo1.maven.org según Sonatype
<repositories> <repository> <id>Central Maven repository</id> <name>Central Maven repository insecure</name> <url>http://insecure.repo1.maven.org</url> </repository> </repositories>