解决SpringBoot使用maven下载不了jar包的问题

分类:计算机 | Spring | 综合 3504
更新:2021-02-28 01:22:15
编辑

说明

 最近在项目中使用IDEA导入了一个SpringBoot工程,通过maven的方式下载jar包,发现jar包死活下载不下来,进到maven本地仓库jar包的版本文件中发现里面只有一个”.lastUpdated”文件,文件里面有报错信息“PKIX path building failed\: sun.security.provider.certpath.SunCertPathBuilderException\: unable to find valid certification path to requested target”。

使用命令解决jar包下载问题

 一开始以为是自己本地的maven环境出了问题,难道是以前配置的阿里云的maven仓库镜像地址失效了吗,于是上网查了下阿里云的maven镜像仓库的地址有没有变化,但是没查到什么结果,于是把settings.xml文件中的maven仓库镜像地址改了下,添加了一些别的镜像地址,但是重新导入jar包还是报一样的错误。
 就这样折腾了半天还是没有搞定,看来这个思路不对,于是又上网查了下lastUpdated文件里的报错信息,发现这个错误好像是因为JDK证书认证导致的,但是很奇怪,之前用maven的时候都是好好地,没报这个错误,怎么会突然需要证书认证呢?难道是因为前段时间升级了一下JDK导致的吗,不太清楚,回头再查下这个问题。
 先按照网上的解决方法一“忽略SSL证书检查”来试试,在cmd窗口中直接使用maven命令来下载之前一直下载不下来的jar包,需要在maven命令后加入参数 ‘-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true’,完整命令如下:

mvn dependency:get -DremoteRepositories=http://maven.aliyun.com/nexus/content/groups/public/ -DgroupId=junit -DartifactId=junit -Dversion=4.8.2 -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

 这样试了以后发现确实可以下载jar包了,看来果然是SSL证书认证的问题了,但是这样下载jar包也不是个办法呀,一个pom文件那么多依赖包,总不能一个一个去下载,要累死的呀。

在IDEA中解决jar包下载问题

 基于上面的经验我想着如果能把这个命令配置到IDEA里面那是不是也可以避免SSL的证书认证问题,可以在IDEA里面正常使用maven了。于是乎就在IDEA的maven配置项中找了找,找到了两个地方,一个是Maven——Importing——VM options for importer,另一个是Maven——Runner——VM Options,但是把命令 ‘-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true’填了进去应用以后并没有生效,jar包还是下载不下来,难道是没找对地方吗,但是又找了半天,也没有发现其它可以配置命令的地方了,这真是没有办法了啊。

但是咱不能放弃呀,于是又在网上苦苦查询资料,最后终于不负功夫,在网上找到了一篇文章访问地址,里面有个正确的解决方法,就是在Maven——Runner——VM Options里配置命令,不过命令不是上面那个,应该是 ‘-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true’,配置进去以后试了下,果然成功了,jar包终于可以正常下载了,真是不容易呀。

解决下载的jar包没有被maven工程引用的问题

 本以为问题就此已经解决了,可以顺利把工程运行起来了,but,怎么代码还是提示我找不到类呢,还是找不到jar包?但是在本地仓库里明明都已经有这些jar包了呀,这又是怎么回事呢,找了半天还是没找到原因,看来还是自己对IDEA中maven jar包的管理使用不够了解呀。 最后还是和其它正常的maven工程做了对比,终于找到了问题所在,原来我的maven工程的External Libraries是空的,感情是我辛辛苦苦下载下来的jar包没有引用到工程里面啊,但是之前的maven工程在下载完jar包以后External Libraries里面就会自动引用pom文件里引用的jar包了呀,在这里怎么就是空的呢?

最后在网上找到了一篇文章访问地址

里面说的是这好像是maven的一个bug,jar包没有引用成功,于是按照人家的操作步骤试了下:

  1. 打开IDEA侧边栏Maven Project——life cycle——clean
  2. life cycle——install
  3. 最后同样是在Maven Project侧边栏中,右键项目名称——reimport。 操作完成以后就可以成功的将maven仓库的jar包引用到了IDEA工程中,至此这个问题终于成功地得到了解决。