前言
之前的那台电脑在创建maven项目时失败,报的错误的大致中文意思是无法获取maven某个插件的元数据文件,例如问题can't resolve maven-metadata-central.xml
最终采用这篇博客里的方法也就是设置maven运行时参数
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME
-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true
问题的原因是maven在网站上下载依赖时jdk会检查网站安全证书,因证书问题从而导致依赖下载失败,进而无法创建项目。这样设置参数可以使其忽略证书检查.
之后换新电脑,创建maven项目再次出现老问题,设置参数却不管用,经过一番摸索和查阅资料再次解决问题,特此记录解决思路以及自己的解决办法
解决方案
分析思路
使用ide创建maven项目,影响项目创建的因素一般有这几个
一、ide设置
像idea往往自带maven,创建项目时注意使用的是自己下的maven还是ide自带的;
每个人的ide的设置可能都不一样,尤其是有时会对网络进行设置,如果不清楚是不是网络设置的问题建议还原设置。这里使用的是IE创建maven项目,不是IJ,使用IJ创建的也可以参考
二、网络
查阅诸多资料,根据前辈们的经验汇总,电信、移动、联通的网在下载依赖时可能有的成功有的不成功,个人使用移动网、联通网暂时没出现问题
三、maven配置
c盘用户名目录下.m2文件夹往往是默认的maven配置文件夹,里面还存在默认的maven仓库。
.m2文件夹下有settings.xml,一般用来配置maven,常用的就是配置仓库,可能有的人无法直接使用默认maven中央仓库去下载依赖,从而导致失败,这时可以设置为国内的镜像仓库,下面附一份相对比较全的仓库配置
<mirrors>
<!-- 配置阿里云maven私有仓库(即配阿里私服)-->
<mirror>
<id>alimaven</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central</url>
</mirror>
<mirror>
<id>aliyun_maven</id>
<mirrorOf>*</mirrorOf>
<name>public_repository_in_China</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- oschina 仓库 -->
<mirror>
<id>osc</id>
<mirrorOf>central</mirrorOf>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
<mirror>
<id>osc_thirdparty</id>
<mirrorOf>thirdparty</mirrorOf>
<url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</mirror>
<!-- maven中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- maven的其他仓库 -->
<mirror>
<id>central-maven</id>
<name> maven</name>
<url>http://central.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<!-- 其他系列仓库 -->
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
这个仓库设置非常常见但对创建项目失败这种问题并不一定有效
四、jdk版本
本人一共用过三个系列的的jdk:oracle jdk、openjdk、graavlm-ce-jdk
之前的电脑存在oracle jdk、graavlm-ce-jdk,问题解决是因为无意中换掉了官方的jdk也就是oraclejdk改成了graavlm-ce-jdk同时设置了maven运行参数
新电脑在创建maven失败后换了graavlm-ce-jdk,没有设置maven运行参数的情况下项目创建成功maven项目但是有warning,然后加上参数再次创建项目warning依旧存在,此时意识到可能是oraclejdk的问题然后下载了openjdk,在不加maven参数情况下用不同版本(8、11、13、14、15)进行测试,全部成功创建项目且没有warning。下面附上openjdk百度云链接,提取码:zis8 。
为什么openjdk能够成功而oraclejdk却失败原因暂时未知,可能每人情况不大一样,如果前面几张方法都没有解决问题,不妨尝试换个jdk,jdk版本很多,优先考虑openjdk的8和11,都是长期维护版本且不至于因为版本过新而出现其他问题。
五、maven
maven本身下载时出现差错,建议重下压缩包,并检验md5码;
注意设置Maven运行参数绕开网站证书检测
六、项目初始设置
这里算是项目创建模板选择,很多人包括我都是按照教程选择了一个模板然后再创建项目。
事实上,这里大可不必选择模板,因为据我分析个人的报错提示发现按照模板创建项目是需要相关模板文件的,但此时容易出现can not create archetype
错误,再进一步分析报错是无法获取到相应的模板文件从而导致无法依照模板创建项目,所以在前面方法无效时可以尝试跳过模板选择直接点下一步,但个人推测问题还是出现在jdk上或者网站证书上。
总结
个人总结:
解决项目创建失败问题优先考虑设置maven运行参数、切换jdk版。
如果在同样的网络下项目创建没问题,依赖下载失败,优先考虑更换仓库地址、设置maven运行参数。
maven创建项目失败以及无法下载依赖的解决办法目前能想到的大致是这些,如果以后有新的解决办法会再次更新,欢迎交流自己的解决方案
2020/11/03 更新
使用IJ创建springboot项目失败,最终解决,问题与解决办法如下:
1、初始化项目失败,下载artifact文件失败,原因在于项目pom文件中新引入仓库,且其优先级高于setting.xml,其配置的仓库会在设置中出现
这里显示的是当前正在使用的仓库,而如果pom文件出现下面的内容则此处会发生相应的改变
个人此处使用的版本是2.3.6,之前使用的是2.3.5,因为是新版本故需要重新下载相关项目构建的依赖文件,但是因为他在pom文件中配置的仓库不是常用的各类仓库地址,因此会提示从https://repo.spring.io/milestone
下载xxx文件失败,此时将此处新增的仓库注释掉,然后再重新打开项目使用之前在setting.xml文件中配置的地址进行构建即可
2、下载依赖不成功,显示本地仓库存在相关依赖,因为之前相关依赖未完全下载成功而导致此时下载依赖失败,此时可以修改仓库地址成如下:
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>https://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</mirror>
注意:maven仓库地址的协议是https,不是常见的http,否则会报501错误
3、下载完项目需要的一些依赖后,还需下载plugins,此时之前在pom文件中注释掉仓库地址,需要重新恢复,否则可能也会报错
4、可能会遇到Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found
问题,在pom文件下为该依赖添加版本号即可,版本号复制pom文件前面给的版本号即可。记得关闭项目重新打开
然后坑爹的地方来了,个人再次新建两springboot项目,版本都在2.3.5以上,然而构建项目很顺利,基本没啥问题,事实再一次证明maven构建项目容易出问题在第一次构建新版本项目上,问题的出现具有很强的偶然性与不可预测性,但是在maven构建项目上不断踩坑之后我发现一般会出的问题来来回回就是那么几个,但就是这几个问题坑惨了无数的初学者。
有预感,还会再次更新。。。