IntelliJ IDEA更新Maven远程仓库索引
因为某些原因,在 IDEA 下载 Maven 索引总是特别慢,有时候等待它下载好几个小时,然后突然抽风下载失败,再下载又要重新下了,所以这里介绍从远程下载索引到本地更新的方法。
本文默认你已经在 IDEA 配置好了 Maven 和 tomcat 环境,并且在 IntelliJ IDEA 已经关联了配置好的 Maven。
原理
IDEA 更新索引默认从中央仓库下载,如果在国内,下载非常慢。配置了阿里云镜像,就会从配置的镜像根目录 /.index/ 找索引文件,但是阿里云并没有提供索引服务,所以如果配置了阿里云镜像,再更新索引会报错。
所以我们搭建 tomcat 本地服务器,再把本地服务器伪装成阿里云镜像服务器,将索引文件放到本地服务器,再从中央仓库下载索引文件放到服务器里,这样 IDEA 就会从本地服务器下载索引来更新。
步骤
打开
Maven的配置文件 :Maven根目录/conf/settings.xml,先把自己添加的所有镜像注释,然后添加如下镜像,后面我们的tomcat本地服务器要伪装成这个镜像服务器:<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>http://maven.aliyun.com/repository/public</url> </mirror>注意是 http 而不是 https !!!
因为我们搭建
tomcat服务器默认是http服务。打开
tomcat的服务器配置文件:tomcat根目录/conf/server.xml,找到这一段:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="60000" redirectPort="8443" acceptCount="500" maxThreads="400"/>将端口 8080 改为 80 ,
tomcat服务启动以后,访问路径是127.0.0.1:8080,http默认端口是80,所以先改tomcat端口为80,这样浏览器输入127.0.0.1就是tomcat主页手动从中央仓库下载索引,需要下载两个文件:nexus-maven-repository-index.properties 和 nexus-maven-repository-index.gz 。这里有个小坑,从谷歌浏览器直接另存为第一个文件,会自动加
.txt后缀,注意去除。在
tomcat根目录/webapps/ROOT/下 创建文件夹/repository/public/.index/,将下载好的文件移动到tomcat根目录/webapps/ROOT/repository/public/.index/下,tomcat主页对应tomcat文件夹中的ROOT文件夹,因此,我们在ROOT文件夹里加文件,就能通过127.0.0.1/文件夹名下载。使用管理员权限修改
host文件:C:/Windows/System32/drivers/etc/hosts,在最后添加一行:127.0.0.1 maven.aliyun.com,使访问maven.aliyun.com映射到127.0.0.1,计算机是先查host再查dns的,因此,修改host文件,把阿里云映射到本地,这样,访问maven.aliyun.com时,系统就自动跳到127.0.0.1。启动
tomcat,在Windows系统下双击tomcat根目录/bin/startup.bat即可,启动时可能会报找不到jdk或者80端口占用等错误,百度一下自行解决,这里不再赘述。启动完成后建议浏览器访问http://maven.aliyun.com/repository/central/.index/nexus-maven-repository-index.properties,看看是不是正常访问。打开
IDEA,然后打开File -> Settings或者快捷键Ctrl + Alt + S打开设置,找到Build,Execution,Deployment -> Build Tools -> Maven -> Respositories,然后点击https://repo.maven.apache.org/maven2再点击Update按钮进行更新,这时候千万不能关闭对话框,否则会导致更新失败,IDEA右下角会有更新进度条,等进度条消失就更新完毕啦。更新完成后我们要恢复一些配置文件:
- 关闭
tomcat服务器,修改server.xml配置文件,将 80 端口再改为8080端口。 - 删除
ROOT目录下的文件夹。 - 删除
hosts最后一行我们添加的映射。 - 将
Maven配置文件中http再改为https。
- 关闭