Idea中maven无法下载依赖包问题解决
用过idea开发过项目的同学,偶尔会遇到项目中有一些依赖没法下载,或者依赖包已经有项目却无法扫到的问题,下面就从原理来解决这类问题。
第一,镜像的原因导致无法下载依赖包。
这里我们简单介绍一下maven里面的仓库和镜像,参考一位大佬的博客
1.1 maven仓库

1.1.1 仓库分类
- 本地仓库:位于你本机上,在项目中优先从本地残酷查找依赖包,没有则从远程仓库找,并缓存到本地仓库中。
- 远程仓库(remote Repository):是一个公共的仓库,只需要简单的配置,便可以对其进行包的下载。远程仓库分为
1.中央仓库 :http://repo1.maven.org/maven2/
2. 私服 :一般公司在用,公司拥有自己的一些工具包,无法公开到公共库,则需要把这些包放到公司的仓库中,供公司开发使用。
3. 其它 :其他可以互联网公共访问maven repository,例如 jboss repository等
1. Mirror
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
原理如下图:

BRepository 这里id代标镜像名称。
http://B B仓库的url地址。
A 表示所有访问A仓库的,都会被重定向到B仓库去。
我们称B为A的镜像,也就是A仓库有的包,B仓库都有(不然还不如不配)。
下面是阿里云的镜像配置:
<mirror> <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 --> <id>planetmirror.com</id> <!--镜像名称 --> <name>aliyun</name> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo1.maven.org/maven2)的镜像,就需要将该元素设置成 central。这必须和中央仓库的id central完全一致。--> <mirrorOf>central</mirrorOf> </mirror>
可以看出,阿里云做为了中央仓库的镜像,具体的配置本文不再叙述。
那么上面两点和题目有什么关系呢?
我们可以知道中央仓库虽然很方便,但是身处国内人开发人员,在下载依赖的时候经常遇到7~8KB的下载速度,无疑给开发带来了极大的痛苦,而使用阿里云等其它镜像,可以大大加快依赖包的下载速度,还没有配置的镜像的你,赶紧配置一波吧。
这里介绍一下快速找到和修改setting,xml文件的方法
1.第一

2. 第二

查看和修改setting.xml 文件
第一 在项目上点击右键

具体的配置

第二 profile的勾选
在实际的项目中,项目开发被经常被分为开发版本,测试版本,发布版本。而这三个项目版本为了方便开发和测试,项目里面的会有很多不同的配置,比如数据库的配置,中间件redis的配置等等。通过profile文件,我们可以通过简单的勾选来确定项目使用那些配置和那些包,当然profile还有更灵活的运用,读者可以自行百度。所以如果你没正确勾选profile,项目的有些包是无法下载的。或者你会遇到,依赖包明明就有,但是项目里面却无法扫描到jar里面文件的问题(这个问题,很常见不过基本是一些小问题,比如“未刷新”和”根文件的选择错误“等)。
当你刚入新项目组的时候,一定要问清楚镜像的配置和profile的勾选问题,当然profile是可以在setting文件里面进行配置的。
第三 刷新maven

总结
对于后台项目的启动,在实际过程中还有很多的问题,刚入职的同学千万不要傻傻的自行百度,我们除了一些基本问题排查之外,更多的时候需要询问项目组的开发人员,毕竟有些配置的错误你找了半天,可能别人一眼就搞定了,当然还可以是pom文件的冲突问题,这里不再详细介绍。
相关文章
Spring Boot ORM 框架JPA使用与连接池 Hikari详解
这篇文章主要介绍了SpringBoot ORM框架JPA与连接池Hikari,主要就是介绍JPA 的使用姿势,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-08-08
java中synchronized(同步代码块和同步方法)详解及区别
这篇文章主要介绍了 java中synchronized(同步代码块和同步方法)详解及区别的相关资料,需要的朋友可以参考下2017-02-02
springboot访问template下的html页面的实现配置
这篇文章主要介绍了springboot访问template下的html页面的实现配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-12-12
Java ThreadPoolExecutor 线程池的使用介绍
Executors 是一个Java中的工具类. 提供工厂方法来创建不同类型的线程池,这篇文章主要介绍了Java ThreadPoolExecutor 线程池的使用介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04
Mybatis报错日志BindingException的解决
本文主要介绍了Mybatis报错日志BindingException的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07
关于@ApiImplicitParams、ApiImplicitParam的使用说明
这篇文章主要介绍了关于@ApiImplicitParams、ApiImplicitParam的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10


最新评论