一、什么是私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。
二、私服的特性
1、节省资金、外网带宽
减少重复请求造成的外网带宽消耗。利用私服代理外包仓库之后,对外的重复构建下载便得以简化,降低外网带宽压力。
2、加速Maven构建
不停得连接请求外部仓库是相当耗时的,但Maven的一些内部机制(如快照更新检查)要求Maven在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外部远程仓库时,构建速度会降低。使用私服解决这问题,Maven只需要检查局域网内部私服的数据时,构建速度便有明显提高。
3、部署第三方构件
当某个机构无法从任何一个远程仓获取怎么办?比如Oracle的JDBC驱动由于版本原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内部Maven项目使用。
4、提高稳定性,增强控制
对于远程仓库来说,当外网不可用时,Maven构建有可能因为依赖没有下载而不可行,搭建并应用私服后,即使没有外网,如果该构件之前被其他人下载过就会存在私服上,此时再次依赖该构件就可以不用连接外网,直接从私服上下载到。同时私服软件(nexus)还提供了额外的管理功能。
5、降低中央仓库的负荷
中央仓库是有限的。如果所有的Maven工程开发过程中,都通过中央仓库实现构件的依赖和管理,那么中央仓库的负荷过高,也会严重影响工程构建的效率。如果使用私服,可以分散中央仓库的负荷,只有在私服中没有需要依赖的构件时才会去连接中央仓库。