您好,我在 java 1.6 中使用 Maven 时遇到错误。
我已经在stackoverflow和其他网站上尝试了很多解决方案,但我不知道如何解决。
这是错误日志:
[ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to uk (https://repo1.maven.org/maven2/): Received fatal alert: protocol_version -> [Help 1]
org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:122)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:150)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getMojoDescriptor(DefaultMavenPluginManager.java:269)
at org.apache.maven.plugin.DefaultBuildPluginManager.getMojoDescriptor(DefaultBuildPluginManager.java:239)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecution(DefaultLifecycleExecutionPlanCalculator.java:158)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecutions(DefaultLifecycleExecutionPlanCalculator.java:145)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:122)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:135)
at org.apache.maven.lifecycle.internal.builder.BuilderCommon.resolveBuildPlan(BuilderCommon.java:97)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:109)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
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.apache.maven.plugins:maven-clean-plugin:jar:2.5
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:302)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:287)
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:108)
... 25 more
我使用的是 Java 1.6 JDK 和 Maven 3.2.5(发现这是允许 java 1.6 的最后一个版本)。
我已经尝试在 maven settings.xml 上使用 set MAVEN_OPTS=-Dhttps.protocols=TLSv1.1,TLSv1.2
如果我使用 Maven 执行“更新项目”,它会完美运行,而且如果我尝试连接到 Maven 尝试访问的 URL,我可以打开它,但在 Eclipse 中它会失败。
如果您需要更多信息,请告诉我,我将更新该帖子。
谢谢指教。
最佳答案
问题的根本原因:
Maven Central 不再支持 TLSv1.1;请参阅Party's over: TLS 1.1 will be discontinued on Maven Central THIS FRIDAY
Java 6 不支持 TLSv1.2。
(Maven 版本与此无关。“protocol_version”错误来自 Java 6 内置 JCE 提供程序,该提供程序不支持 TLSv1.2 或更高版本。)
您可能的解决方案是:
升级到 Java 7(或者更好的是 Java 8 或 11)。 Java 6 已停产。您不应该使用它,您的客户也不应该使用它。
尝试在运行 Maven 的 Java 6 JVM 中使用第 3 方 JCE 提供程序;请参阅How to use TLS 1.2 in Java 6寻求建议。
设置您自己的 Artifactory 或 Nexus 存储库作为 Maven Central 的缓存,并配置 Maven 以使用它。
配置 Maven 在与 Maven Central 通信时使用 HTTP(而不是 HTTPS);请参阅Force m2e to use http instead of https 。 (但请注意,这会使您的构建过程容易受到依赖项的特洛伊木马版本的偷偷注入(inject)。)
手动下载所需的 Artifact (依赖项 POM 和 JAR 文件)并将其添加到本地(例如 ~/.m2)Maven 存储库。
请注意,升级是最好的解决方案。对于不升级 Java 平台的人来说,生活只会变得更加困难。您(或您的前任)应该在 2012 年升级……在 Java 6 公共(public)更新停止之前。
关于java - 错误protocol_version Java 6与maven 3.2.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60281203/