Intellij IDEA利用Maven索引实现自动补全
Maven的仓库和索引
- 中央仓库:
Maven
的中央仓库http://repo1.maven.org/maven2/,该地址是内置与Maven
源码中。其他的仓库,都是镜像。 - 索引:中央仓库带有索引文件以方便用户对其进行搜索,索引每周更新一次。
- 本地仓库:是建立在本地机器上的
Maven
仓库,本地仓库是中央仓库(或者说远程仓库)的一个缓冲和子集,当你构建Maven
项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven
会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的Jar
包版本在本地仓库没有,而且也不存在于远程仓库,Maven
在构建的时候会报错,这种情况可能发生在有些Jar
包的新版本没有在Maven
仓库中及时更新。Maven
缺省的本地仓库地址为${user.home}/.m2/repository
。也就是说,一个用户会对应的拥有一个本地仓库。当然你可以通过修改${user.home}/.m2/settings.xml
配置这个地址,也可以通过修改的Maven
目录下${MAVEN_HOME}/conf/settings.xml
配置本机全局本地仓库地址。
<settings>
<localRepository>D:/work/resources/repository</localRepository>
</settings>
IntelliJ IDEA利用索引实现自动补全
在国内,由于网络原因,访问下载Maven
仓库索引时,要么速度很慢,要么无法访问,这个我们的工作带来不便,所有我们一般都用Nexus
构建私服。另外私服还有其他好处,比如利用私服更有利于对公司内部开发人员依赖的Jar包版本进行控制等。
中央仓库带有索引,为什么本地的IDEA也需要下载索引呢?那么直接看下图你就明白了,如果本地没有下载索引的话,在pom.xml
文件中添加依赖是得不到任何提示的。
IntelliJ IDEA配置Maven
下载Maven
索引
在配置完成之后就可以下载仓库索引了,注意这是一个非常耗时的过程,建议利用晚上或者出去午饭时间下载。下载过程及下载完成之后状态如下图所示。
利用本地Web服务作为索引下载服务器
首先下载如下2个文件:
- nexus-maven-repository-index.properties:https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties
- nexus-maven-repository-index.gz:https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.gz
- 启动本地Web服务,在其根目录下建立一个
/maven2/.index
的虚拟目录(注意:如果你使用的是Windows系统,可能无法建立.index
件夹,必须使用DOS命令:mkdir .index
),把上述两个文件拷贝至该虚拟目录下; - 编辑host文件
C:\Windows\System32\drivers\etc\hosts
,在尾巴追加127.0.0.1 repo1.maven.org
- 现在回到IDEA上更新
Maven
插件索引; - 将第三步中的host添加项移除。
参考文章: