Nexus
文章参考:http://c.biancheng.net/nexus/
1.概述
Nexus有什么用?为什么要学习Nexus?首先要明白Nexus 的全称是 Nexus Repository Manager(Nexus 仓库管理器),是 Sonatype 公司的一个产品;
Maven私服其实并不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降低中央仓库负荷、节省外网带宽、以及提高项目稳定性等优点,使得私服在实际开发过程中得到了相当普遍地使用;能够帮助我们建立 Maven 私服的软件被称为 Maven 仓库管理器(Repository Manager)
,主要有以下 3 种:
- Apache Archiva
- JFrog Artifactory
- Sonatype Nexus
其中,Sonatype Nexus 是当前最流行、使用最广泛的 Maven 仓库管理器;
Nexus 一般用来搭建位于组织或公司内部的 Maven 私服,代理所有的仓库(包括中央仓库),用户通过它就可以获取和管理所有所需的 Maven 构件,Nexus 开源版(当然Nexus也有专业版,开源版已经足以满足大部分Maven用户的需求了)具有以下优点:
- 占用内存小(28 M 左右)
- 具有基于 ExtJs 得操作界面,用户体验较好
- 使用基于 Restlet 的完全 REST API
- 支持代理仓库、宿主仓库和仓库组
- 基于文件系统,不需要依赖数据库
- 支持仓库管理
- 支持构件搜索
- 支持在界面上上传构件
Nexus主要分为Nexus 2.x和Nexus 3.x两个大版本,它们是并行关系,Nexus 2.x相对来说运行比较稳定并且使用最多,所以我们主要介绍Nexus 2.x;
因为电脑不知道什么原因每次下载Nexus安装包的时候都下载不了,然后因为这个实际上也不是什么很必要的知识点,所以我们这里简单过一下即可,就不再在PC上演示了;
2.Nexus仓库
Nexus 作为一款 Maven 仓库管理器,仓库(Repository)自然是 Nexus 最核心的概念。Nexus 中提供了许多仓库概念,如代理仓库、宿主仓库以及仓库组等。Nexus 为每一种仓库都提供了丰富的配置参数,方便我们根据自身需要进行定制;
2.1 Nexus仓库属性
在仓库列表中,每个仓库都具有一系列属性:
- Type:仓库的类型,Nexus 中有 4 中仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。
- Format:仓库的格式。
- Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
- Repository Status:仓库的状态。
- Repository Path:仓库的路径。
2.2 Nexus仓库分类
Nexus 仓库按照类型(Type)区分,主要分为以下 3 个类型:
代理仓库(proxy):用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。
宿主仓库(hosted):又称 Nexus 本地仓库,该仓库通常用来部署本地项目所产生的构件。
仓库组(group):用来聚合代理仓库和宿主仓库,为这些仓库提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的构件。
由上图可知:
- Maven 可以直接从宿主仓库中下载构件。
- Maven 也可以从代理仓库中下载构件,代理仓库会从远程仓库下载并缓存构件。
- Maven 还可以从仓库组中下载构件,仓库组会从其包含的宿主仓库和代理仓库中获取构件。