中央仓库:目前来讲,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仓库托管服务实现。服务器
众所周知,因为伟大的中国防火墙,因此在使用IDEA下载Maven仓库索引的时候,要么没法访问,要么就是速度极慢,这对开发人员带来了极大的不便,因此通常公司都用Nexus搭建一个公司内部的私服。同时利用私服更有利于对公司内部开发人员依赖的Jar包版本进行控制。session
也许你会问,中央仓库带有索引,为何本地的IDEA也须要下载索引呢?那么直接看下图你就明白了,若是本地没有下载索引的话,在pom.xml
文件中添加依赖是得不到任何提示的。
maven
IntelliJ已经内置了对Maven插件的支持,固然你也能够配置本身的Maven,只须要进入Settings->Maven->Maven home directory|User settings file|Local repository
配置便可。注意若是使用本身配置的Maven,那么必定要勾选Override
,不然配置不生效。
ide
在使用14.1.X版本的IntelliJ时,更新Maven索引出现以下错误Indexed Maven Repositories - type remore - Error - Idea 14.1.5,根据该连接内所述缘由为:这是IntelliJ14.1.X版本中的一个BUG,而且会在下一个发布版本中进行修复,推荐将IntelliJ升级到版本15。测试
鉴于伟大的防火墙,因此推荐使用国内的镜像资源做为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还须要安装一些插件包,这些插件包的下载地址也让其指向OSChina的Maven地址。修改以下所示
<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文件。
在配置完成以后就能够下载仓库索引了,注意这是一个很是耗时的过程,建议利用晚上或者出去午餐时间下载。下载过程及下载完成以后状态以下图所示。本次下载总体耗时在一个小时左右。
另外我在思考既然下载一次这么麻烦,那么下载下来的索引存放在哪里呢?我可否将其拷贝到其余机器重复利用呢?因而通过一番搜索我发现了索引的存放位置,而且将其打包拷贝到其余机器的一样位置,但未作测试,不知可否重复利用,若有网友测试完毕,能够告诉我,感谢之。
/maven2/.index
的虚拟目录(注意:若是你使用的是Windows系统,可能没法创建.index
件夹,必须使用DOS命令:mkdir .index
),把上述两个文件拷贝至该虚拟目录下C:/WINDOWS/system32/drivers/etc/hosts
文件,在文件中加入:127.0.0.1 repo1.maven.org
127.0.0.1
为步骤2的Apache Tomcat
服务器IP地址。备注:其实该解决办法的整体思路就是先将索引文件总体下载,而后利用本地的Tomcat做为服务器,再从Tomcat上更新索引。
最后若是你想本身配置一个私服,能够参考Maven仓库管理之Nexus。
Resolving dependencies of ...
状态而没法下载我给出的建议是,如无必要,移除开源中国的第三方库镜像地址,移除的内容以下
<mirror> <id>nexus-osc-thirdparty</id> <mirrorOf>thirdparty</mirrorOf> <name>Nexus osc thirdparty</name> <url>http://maven.oschina.net/content/repositories/thirdparty/</url> </mirror>
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>