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>
相關文章
相關標籤/搜索