Nexus是谷歌手机的一个牌子,咱们要介绍的不是Nexus,而是Sonatype Nexus。它是Sonatype公司的一个产品,叫Nexus,它是Maven的私服。事实上有三种专门的Maven仓库管理软件能够帮助咱们建立私服,有Apache的Archiva;JFrog的Artifactory和Sonatype的Nexus。其中Archiva是开源的,Artifactory和Nexus的核心也是开源的。这里咱们重点介绍Sonatype公司的Nexus。缓存
看一下百度百科对私服的介绍:服务器
我不玩游戏,对游戏的私服也不是很了解,咱们这里所说的私服跟游戏的私服还不同。我把它解释为私人服务器。Maven的内容上篇博客咱们已经介绍了,【项目管理】项目管理工具Maven,而为何要在Maven中用私服呢?呵呵,这是个问题,咱们下面就好好介绍一下Sonatype Nexus,Maven的私人服务器。网络
其实要说Nexus,它并非Maven的核心内容,而是两个相互独立的东西。可是Nexus的产生确实是跟Maven有渊源的。说是私服,其实Nexus就是Maven的一个远程仓库。上篇博客咱们介绍了Maven的本地仓库和中央仓库,那么Nexus是什么样的仓库呢?maven
其实这个是以前困扰个人一个问题,我理解了本地仓库了中央仓库,知道一个项目须要插件的时候会先去本地仓库找,若是本地仓库没有就会去中央仓库找,找到后下载到本地仓库中再使用。可是Nexus的出现,让我傻傻搞不清楚本地仓库和Nexus的区别。本地仓库是保存从中央仓库(远程仓库)下载下来的插件;Nexus也是保存从中央仓库下载下来的插件,那么从中央仓库下载下来的插件是选择保存在本地仓库?仍是Nexus?仍是连个地方各保存一份呢?带着这样的疑问,我开始进一步的了解Nexus。工具
深刻了解后我才发现,原来Nexus也是远程仓库的一种,它是架设在局域网内的仓库服务。这里我称之为远程仓库,是为了跟中央仓库区分开来,由于原来的理解有问题,中央仓库是Sonatype公司出资维护的,咱们把它想象成是一个无比巨大,物产丰富的大库,而这个库置于最外层;咱们所说的Nexus置于中央仓库和本地仓库之间,Nexus之因此称为是一种特殊的远程仓库,是为了节省宽带和时间,在局域网内架设的一个私有的仓库服务器,它代理广域网上的全部的中央仓库,供局域网内的Maven用户使用。.net
打个比方,就比如外部全部的“中央仓库”是一个大的油库,里面有特别多的资源。本身家有个油壶,负责装油拿在家炒菜,家里的这个小油壶就是“本地仓库”。可是用小油壶去大油库里盛油,中间要走不少路,花费不少钱(这里指占用的网络流量和时间),因此想着在中间创建一个小的中转站——商店,把油放到油桶里(指Nexus)。这样,外部的全部油库均可以把油放到商店的油桶中,居民根据须要能够拿着油壶直接去商店打油了。这样一来,你明白Nexus的做用了么?插件
因此,当项目中须要某些插件时,它会先去本地仓库中寻找,若是没有,从私服Nexus请求,若是私服Nexus不存在该插件,则从外部的中央仓库中下载,缓存到Nexus上以后,再下载到本地仓库中供项目使用。除此以外,一些没法在中央仓库下载下来的插件也能从本地上传到私服Nexus中供你们使用。代理
一些关于Nexus的详细配置以及细的知识点,详情能够参考个人这篇博客:maven+nexus环境搭建。做为一个Nexus的入门,这篇博客就介绍到这里,不过做为Maven配合使用的Nexus,它已经成为当今最流行的Maven仓库管理软件。有什么问题欢迎在下方留言!blog