文档章节

IntelliJ IDEA中Maven插件无法更新索引之解决办法

闪电
 闪电
发布于 2016/12/02 11:15
字数 1916
阅读 376
收藏 0

Maven的仓库、索引

中央仓库:目前来说,http://repo1.maven.org/maven2/ 是真正的Maven中央仓库的地址,该地址内置在Maven的源码中,其它地址包括著名的ibiblio.org,都是镜像。

索引:中央仓库带有索引文件以方便用户对其进行搜索,完整的索引文件至2015年12月8日大小约为1.11G,索引每周更新一次。

本地仓库:是建立在本地机器上的Maven仓库,本地仓库是中央仓库(或者说远程仓库)的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的Jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能发生在有些Jar包的新版本没有在Maven仓库中及时更新。Maven缺省的本地仓库地址为${user.home}/.m2/repository。也就是说,一个用户会对应的拥有一个本地仓库。当然你可以通过修改${user.home}/.m2/settings.xml配置这个地址:

<settings>
  ···
  <localRepository> D:/java/repository</localRepository>
  ...
</settings>

提交内容:只要你的项目是开源的,而且你能提供完备的POM等信息,你就可以提交项目文件至中央仓库,这可以通过Sonatype提供的开源Maven仓库托管服务实现。

IntelliJ IDEA利用索引实现自动补全

众所周知,由于伟大的中国防火墙,所以在使用IDEA下载Maven仓库索引的时候,要么无法访问,要么就是速度极慢,这对开发人员带来了极大的不便,所以一般公司都用Nexus搭建一个公司内部的私服。同时利用私服更有利于对公司内部开发人员依赖的Jar包版本进行控制。

也许你会问,中央仓库带有索引,为什么本地的IDEA也需要下载索引呢?那么直接看下图你就明白了,如果本地没有下载索引的话,在pom.xml文件中添加依赖是得不到任何提示的。

IntelliJ IDEA中Maven插件配置

IntelliJ已经内置了对Maven插件的支持,当然你也可以配置自己的Maven,只需要进入Settings->Maven->Maven home directory|User settings file|Local repository配置即可。注意如果使用自己配置的Maven,那么一定要勾选Override,否则配置不生效。

IntelliJ14.1更新索引失败原因

在使用14.1.X版本的IntelliJ时,更新Maven索引出现如下错误Indexed Maven Repositories - type remore - Error - Idea 14.1.5,根据该链接内所述原因为:这是IntelliJ14.1.X版本中的一个BUG,并且会在下一个发布版本中进行修复,推荐将IntelliJ升级到版本15。

使用国内Maven仓库的镜像

鉴于伟大的防火墙,所以推荐使用国内的镜像资源作为Maven中央仓库。推荐使用开源中国Maven库使用帮助,配置很简单就不详述了,有两种方式,其一打开settings.xml文件,加入

<mirrors>
    <mirror>
        <id>nexus-osc</id>
        <mirrorOf>*</mirrorOf><!--用一个简单的*号会把所有的仓库地址屏蔽掉-->
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
</mirrors>

当然还有第二种方式,就是屏蔽指定的中央仓库,并且还可以加入OSChina的第三方镜像仓库或者多个仓库,配置如下

<mirrors>
    <mirror>
        <id>nexus-osc</id>
        <mirrorOf>central</mirrorOf><!--这里指定只屏蔽central仓库-->
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
    <mirror>
        <id>nexus-osc-thirdparty</id>
        <mirrorOf>thirdparty</mirrorOf>
        <name>Nexus osc thirdparty</name>
        <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
    </mirror>
</mirrors>

最后,在执行Maven命令的时候,Maven还需要安装一些插件包,这些插件包的下载地址也让其指向OSChinaMaven地址。修改如下所示

<profile>
     <id>jdk-1.8</id>
     <activation>
         <jdk>1.8</jdk><!--指定JDK版本是1.8时自动激活-->
     </activation>
     <repositories>
         <repository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <snapshots>
              <enabled>false</enabled>
            </snapshots>
         </repository>
     </repositories>
     <pluginRepositories>
         <pluginRepository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <snapshots>
              <enabled>false</enabled>
            </snapshots>
         </pluginRepository>
     </pluginRepositories>
</profile>

下载Maven仓库的索引另外你也可以下载开源中国提供的官方纯净版settings.xml文件。

在配置完成之后就可以下载仓库索引了,注意这是一个非常耗时的过程,建议利用晚上或者出去午饭时间下载。下载过程及下载完成之后状态如下图所示。本次下载整体耗时在一个小时左右。

另外我在思考既然下载一次这么麻烦,那么下载下来的索引存放在哪里呢?我能否将其拷贝到其他机器重复利用呢?于是经过一番搜索我发现了索引的存放位置,并且将其打包拷贝到其他机器的同样位置,但未做测试,不知能否重复利用,如有网友测试完毕,可以告诉我,感谢之。

利用本地Tomcat作为索引下载服务器

备注:其实该解决办法的总体思路就是先将索引文件整体下载,然后利用本地的Tomcat作为服务器,再从Tomcat上更新索引。

最后如果你想自己配置一个私服,可以参考Maven仓库管理之Nexus

开源中国镜像存在的问题

  • 开源中国镜像不是很稳定,有时候很快下载完成有时候一直处于Resolving dependencies of ...状态而无法下载
  • 在配置了开源中国第三方库镜像之后,发现一个问题,该库内容更新不及时,很多第三方库中的Jar包版本都非常陈旧。
  • 开源中国的中央仓库与第三方库中存在很多交叉的情况,也就是说中央仓库包括了第三方库中的内容,而且在下载jar文件的时候,默认就是直接从开源中国的中央仓库镜像下载,而不是开源中国的第三方仓库镜像下载。
  • 我给出的建议是,如无必要,移除开源中国的第三方库镜像地址,移除的内容如下

<mirror>
      <id>nexus-osc-thirdparty</id>
      <mirrorOf>thirdparty</mirrorOf>
      <name>Nexus osc thirdparty</name>
      <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</mirror>
  • 针对以上问题,有时候还是需要从国外Maven官方的仓库下载,方法是只需要修改settings.xml文件为官方默认版本即可。现将Maven默认settings.xml贴出
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>D:/apache-maven-3.3.1/repository</localRepository>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
  </mirrors>
  <profiles>
  </profiles>
</settings>

 

本文转载自:http://codepub.cn/2015/12/09/IntelliJ-IDEA-in-Maven-plugin-could-not-update-the-index-of-the-solutio

闪电
粉丝 75
博文 392
码字总数 6789
作品 0
海淀
技术主管
私信 提问
IntelliJ IDEA 2018.3 EAP 发布,支持多行 TODO 注释

IntelliJ IDEA 2018.3 EAP 早期访问版发布,该版本包含 IDE 导航,改进的插件页面,Run Anything,多行 TODO 注释等。 Search Everywhere IntelliJ IDEA 2018.3 将引入 Search Everywhere 对...

达尔文
2018/09/07
4.5K
22
intellij idea maven dependency自动补全

最近在idea上使用maven插件,在pom.xml编写项目依赖的jar包时,已经下载到本地的jar,无法自动补全,需要手动写出来。非常影响效率。 对于这个问题,可以在maven的setting中手动更新本地仓库...

iamyangjy
2015/06/07
0
0
IntelliJ IDEA 2018.1.1 发布,Bug 修复版本

IntelliJ IDEA 2018.1.1 发布,这是 IntelliJ IDEA 2018.1 系列的第一个 Bug 修复版本。IntelliJ IDEA 2018.1.1 包含一个重要的修复程序,用于恢复自动检查更新。 主要更新内容: 在冻结期间...

达尔文
2018/04/11
3.5K
20
IntelliJ IDEA最好的Java开发工具

一直以来,笔者从事Java开发使用的都是Myeclipse、Eclipse工具,因为Eclipse的开源免费加上之前其基金会每年都会安排同步发布新版本,其在05年之后逐步成为Java IDE界的扛把子,但令人失望的...

小暴说
2018/08/04
0
0
Maven 与 IntelliJ IDEA 的完美结合

你是否正在学习Maven?是否因为Maven难用而又不得不用而苦恼?是否对Eclipse于Maven的冲突而困惑? 那么我告诉你一个更直接更简单的解决方案: IntelliJ IDEA! 1. 什么是 Maven,为什么要使用...

Java编程思想
2014/01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

局域网能互相ping通,ubuntu虚拟机不能上外网

【问题】 桥接模式老是无法上网,查看本机IP发现被分配了一个私网地址,猜测应该是虚拟DHCP服务器没有打开,于是查看Ubuntu的网络配置: /etc/network/interfaces 发现没有dhcp配置的信息,只...

tahiti_aa
30分钟前
1
0
以太坊助记词PHP开发包简介

以太坊助记词PHP开发包用来为PHP以太坊应用增加助记词和层级确定密钥支持能力。下载地址:以太坊助记词php开发包 。 1、开发包概述 以太坊助记词PHP开发包主要包括以下特性: 生成符合BIP39...

汇智网教程
昨天
2
0
系统监控-分布式调用链Skywalking

1. 为什么要使用分布式调用链技术? 随着公司业务的高速发展,公司服务之间的调用关系愈加复杂,如何理清并跟踪它们之间的调用关系就显的比较关键。线上每一个请求会经过多个业务系统,并产生...

秋日芒草
昨天
3
0
告诉自己的一些建议

摆脱学生心态 尽快发挥自己价值,让公司感知自己的存在,才是王道 选择比努力重要 自己附着的平台的经济体要是一个快速崛起的行业 转行趁早,年龄越大选择成本越高 趁早大量试错,学习新领域...

林怡丰
昨天
3
0
Windows下安装Redis

下载地址: 3.0老版已不维护更新:https://github.com/MicrosoftArchive/redis/releases 4.0版 https://github.com/tporadowski/redis/releases 中文官网:http://www.redis.net.cn/ https:......

Aeroever
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部