带有maven 3.2.5的Java 6版本的错误协议



嗨,我在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=-Dttps.protocols=TLSv1.1,TLSv1.2

如果我用maven做一个"更新项目",它可以完美地工作,如果我试图连接到maven试图访问的URL,我可以打开它,但在Eclipse中它失败了。

如果你需要更多信息,请告诉我,我会更新帖子。

谢谢你的建议。

问题的根本原因:

  • Maven Central不再支持TLSv1.1;见聚会结束:TLS 1.1将于本周五在Maven Central 上停止

  • Java 6不支持TLSv1.2。

(Maven版本与此无关。"protocol_version"错误来自不理解TLSv1.2或更高版本的Java 6内置JCE提供程序。(

您可能的解决方案是:

  • 升级到Java 7(或更好的Java 8或11(。Java 6是EOL。你不应该使用它,你的客户也不应该使用

  • 尝试在运行Maven的Java 6 JVM中使用第三方JCE提供程序;有关建议,请参阅如何在Java 6中使用TLS 1.2。

  • 将您自己的Artifactory或Nexus存储库设置为Maven Central的缓存,并配置Maven使用它。

  • 将Maven配置为在与Maven Central通话时使用HTTP(而不是HTTPS(;请参阅强制m2e使用http而不是https。(但请注意,这会使您的构建过程容易受到依赖项特洛伊木马版本的偷偷注入的攻击。(

  • 手动下载所需的工件(依赖POM和JAR文件(并将其添加到本地(例如~/.m2(Maven存储库中。


请注意,升级是最佳解决方案。对于那些不升级Java平台的人来说,生活只会变得更加困难。您(或您的前任(应该在2012年升级。。。在Java 6公开更新停止之前。

对您来说可能为时已晚。但这个问题的另一个可能的解决方案是使用代理服务器,该服务器将通过http(或一些旧的加密协议(运行。

使用过时的协议是一种安全风险,所以一定要以不会暴露在互联网上的方式运行它。但如果你真的无法升级你的环境,这可能是一条路要走。有免费的代理数据应用程序(例如Sonateype Nexus(。您的应用程序将从Nexus获取文件,Nexus将使用最新协议从Maven Central读取文件。

最新更新