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

Maven的仓库、索引

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

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

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

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

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

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

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

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

IntelliJ IDEA中Maven插件配置

IntelliJ已经内置了对Maven插件的支持,固然你也能够配置本身的Maven,只须要进入Settings->Maven->Maven home directory|User settings file|Local repository配置便可。注意若是使用本身配置的Maven,那么必定要勾选Override,不然配置不生效。
ide

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文件,加入ui

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

固然还有第二种方式,就是屏蔽指定的中央仓库,而且还能够加入OSChina的第三方镜像仓库或者多个仓库,配置以下url

<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>
相关文章
相关标签/搜索