目录:
- 一、Maven下载依赖包报错
- 1、常规的Maven配置
- 1.1、settings.xml 配置
- 1.1.1、远程仓库的 URL
- 1.1.2、本地仓库的位置
- 2、非常规配置出现的问题
一、Maven下载依赖包报错
每次打开一个新项目的时候,如果这个项目的依赖Jar包,我这里没有,需要去下载的时候,常常会报错,这里做一个总结。IDE是IntelliJ IDEA 2021.1.1。
1、常规的Maven配置
此处的常规是指,默认使用中央仓库,并配置中央仓库的镜像仓库。如果出问题了,第一时间,就应该排查这些配置是否有问题。
1.1、settings.xml 配置
根据上方的需求,本处的settings.xml主要配置两个地方,一个是中央仓库的镜像仓库的URL,另一个是本地仓库的位置。
1.1.1、远程仓库的 URL
打开settings.xml文件,搜索mirror,跳转到对应为止,然后在
中添加镜像仓库的URL。
因为某个已知原因,国内访问一些外国的仓库是偏慢的,所以我们会去配置镜像仓库,例如:
nexus-aliyun central Nexus-aliyun https://maven.aliyun.com/repository/public
与这一步相关的,比较常见的问题是,在build的时候报错,提示某个镜像仓库中找不到对应的依赖项。这里时候应该怎么办呢?
这里偏向于两种可能:
第一种,镜像仓库里面有,但是下载不下来,网络对于依赖项的下载的影响是非常大的,如果下载不了,多刷新几次,如果还是不行,建议换个网络,笔者试过自己网络卡顿下了大半天下载不下来,等到了半夜,不知是网络通畅还是如何,一刷新就全部下好了。
第二种,镜像仓库里面真的没有,这个就需要去镜像仓库里面去仓库,举个例子,我们上面使用的是阿里的镜像仓库,所以我们可以去到阿里的镜像仓库管理网站:仓库服务 去查看。
例如:
我现在需要下载flink-connector-hive_2.12的1.16.0的依赖包,假设现在这个镜像仓库说没有,那么我就登上阿里的镜像仓库的网站去搜索这个依赖包。
找到了依赖项所在的仓库,就可以去查看这个仓库的URL。
需要填入的就是3、中的URL。
1.1.2、本地仓库的位置
本地仓库的位置不会影响下载,此处提到,只是因为我们需要去本地仓库中查看下载情况。
在settings.xml中进行如下配置:
本地仓库路径
现在,假设某个包下载失败,打开本地仓库的路径,找到依赖包的路径,我们可以发现会有如下命名的文件:xxx.lastUpdated,说明下载失败,这种情况往往是因为网络问题而不是镜像仓库没有该依赖包。
下面举例一种网络问题。
因为HTTPS协议中的SSL证书不可信,导致下载失败,可能会有如下报错信息:
unable to find valid certification path to requested target
针对这种情况,了解HTTPS协议的同学,第一个反应应该就是配置忽略SSL证书的检查,所以我们可以得出以下处理方式:
指令如下:
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
2、非常规配置出现的问题
暂无记录,需要根据实际报错情况来解决,需要注意的一点是,也不用过于依赖报错情况,笔者尝试过,报错提示我无法在远程仓库中找到某一个依赖包,但是实际上我已经手动导入,依然报错,后来去其他依赖包一看,发现导出都是xxx.lastUpdated,说明实际问题在于这些依赖包,后解决这些依赖包后,就没有报错提示无法在远程仓库中找到某一个依赖包。