私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网中的maven用户使用,当maven用户需要下载构建的时候,它将从私服请求,如果私服存在,直接下载,如果不存在,私服将到到远程仓库下载,下载后在供maven用户使用,另外一些无法从远程仓库中下载到第三方插件也可用通过或maven用户上传到私服后供其他的maven用户下载使用。
如图所示:
使用私服后:
节省自己的外网宽带:建立私服可以避免,大量的个体用户通过网络远程下载,减少网络流量。
加速Maven构建:不停的请求外部仓库是非常耗时的,因为Maven的一些内部的机制(快照更新检查)要求maven执行构建的时候不停的检查远程仓库的数据,因此使用私服可以避免这样的情况。
其他的就不多说了。
下面我们具体介绍如何创建一个私服:
这里主要介绍下如何用当前最流行的开源Maven仓库管理软件Nexus来配置架设一个私服:
下载地址为:http://nexus.sonatype.org/downloads/
1、下载完成后,将其解压到自定义的目录如:D:\Program Files\nexus-2.1.2-bundle
2、在电脑的环境变量path中添加指向bin的路径:D:\Program Files\nexus-2.1.2-bundle\nexus-2.1.2\bin
3、接下来在系统服务中安装nexus的服务中:在cmd 窗口运行:nexus install ,然后运行nexus start 启动服务。
4、如果没有问题的话,我们就可以路径:http://localhost:8081/nexus/ 访问本地的nexus了首页了,点击右上角的log in 输入初始的用户名:admin 密码:admin123 就可已登录执行更多的操作。
5、为了避免直接请求远程仓库,而使用自己的的私服仓库,就要配置远程仓库员私服仓库的镜像映射。
因此我们修改${user}/.m2/setting.xml文件。
在mirrors标签中添加mirror镜像标签
<!--设置所有的仓库都到指定的url中的去下载jar包,这里设置是本地仓库地址--> <mirror> <id>central</id> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </mirror>
其中的id可以任意取,mirror 表示对于那些仓库进行映射,我们这来配置*表示全部远程仓库。name 只是方便阅读,可省。
url 是我们在nexus 我们访问的实际仓库地址,我这本地nexus中默认的组仓库地址:
如图:
在组仓库中我们可以添加任意想访问的仓库地址。
6、为了可以使用远程中样仓库的快照版本的插件,我们文件中profiles标签中添加profile标签,配置shapshots的值为true,其中的<repository>下的id对应的是中央仓库的id,因此可以覆盖,url可以任意取,因为我们配置了镜像了。
<profile> <id>central-repos</id> <repositories> <repository> <id>central</id> <name>Central</name> <url>http://central</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile>
7、最后完成设置profile的激活,添加,注意id和上面的profile的id一致。
<!--激活对于的profile--> <activeProfiles> <activeProfile>central-repos</activeProfile> </activeProfiles>
8、为了私有仓库的和远程仓库的同步,我们可以更新索引:选择中央仓库,在configration 中设置download romote index 为true ,点击save,就可以更新了。
这样我们的私用仓库就配置完成了。