Не удалось передать артефакт (https://repo.maven.apache.org/maven2): получено фатальное предупреждение: protocol_version → [Справка 1]
Я новичок в Maven и пытаюсь настроить свой первый проект в Maven, но получаю следующее сообщение об ошибке, когда я делаю "Run as → Maven install" в Eclipse. Ниже приведены мои settings.xml и pom.xml
Settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:\Users\Iam\.m2\repository</localRepository>
<profiles>
<profile>
<repositories>
<repository>
<id>central</id>
<url>http://central.maven.org/maven2/</url>
</repository>
</repositories>
<pluginRepositories>
</pluginRepositories>
</profile>
</profiles>
</settings>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mytest</groupId>
<artifactId>MySpringBootMaven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.11.RELEASE</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version><!--$NO-MVN-MAN-VER$-->
<configuration>
<warnName>Test.war</warnName>
</configuration>
</plugin>
</plugins>
</build>
</project>
Сообщение об ошибке:
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.springframework.boot:spring-boot-maven-plugin:jar:1.5.11.RELEASE
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:302)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:218)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:287)
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:103)
... 27 more
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.springframework.boot:spring-boot-maven-plugin:pom:1.5.11.RELEASE from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:287)
... 30 more
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.springframework.boot:spring-boot-maven-plugin:pom:1.5.11.RELEASE from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version
Как разрешить полученное фатальное предупреждение: protocol_version? Моя версия java - 1.7, а версия maven - 3.3.3
Ответы
Ответ 1
Sonatype больше не поддерживает TLSv1.1 и ниже (действует 18 июня 2018 года). Я предполагаю, что вы используете протокол TLSv1.1 или ниже.
В приведенной ниже документации приведены четыре варианта:
- Обновите среду выполнения Java, например, с помощью сборки OpenJDK или поддержки Oracle
- Настройте среду выполнения Java, чтобы включить TLS 1.2, добавив -Dhttps.protocols = TLSv1.2
- Используйте диспетчер репозитория, который использует версию Java, поддерживающую TLS 1.2
- Вернитесь назад к http, пока не сможете выполнить один из вышеуказанных шагов исправления.
Я исправил это сам, просто используя -Dhttps.protocols = TLSv1.2 как аргумент VM.
Ответ 2
Для постоянного решения (в основном требуется Java 7) - в каталоге сборки (где вы делаете команду mvn
) добавьте каталог:
.mvn
(в cmd mkdir.mvn
)
и в нем создать файл
jvm.config
и вставьте следующую строку:
-Dhttps.protocols=TLSv1.2
Ответ 3
Самое простое решение - настроить параметры времени выполнения JVM. На затмении вы можете сделать это следующим образом:
перейдите в windows> preferences> java> установленные JRE нажмите на Intalled JRE/JDK, который вы используете для своего проекта
нажмите "edit" справа -Dhttps.protocols=TLSv1.2
и добавьте -Dhttps.protocols=TLSv1.2
в поле " -Dhttps.protocols=TLSv1.2
по умолчанию".
см. скриншот:
Ответ 4
Я обновился с Java 1.7 до Java 1.8 и получил ту же ошибку. Чтобы устранить эту ошибку, я проверил версию mvn с помощью mvn -version
и обнаружил, что JAVA_HOME все еще использует Java 1.7. Я изменил JAVA_HOME в переменной среды, чтобы указать на Java 1.8 jre в JDK
Надеюсь, это поможет кому-то.
Ответ 5
Я установил свой файл settings.xml в каталоге.m2 так же, как здесь: https://github.com/alipay/sofa-rpc/pull/190/files
Затем exec mvn install
и все зависимости начали загружаться. Раньше у меня не было файла settings.xml, и я не использую прокси. Надеюсь, это поможет кому-то.
Оплаченный У меня есть jdk 1.7 и Maven 3.3.9
Ответ 6
Для этого нужны оба: настройка аргументов времени выполнения JVM, а также наличие файла settings.xml, после того как я это сделал, все заработало. Обновление только аргумента времени выполнения JVM не помогло.