Nexus学习笔记--安装使用教程

Nexus是什么

Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。

Maven 私服其实并不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降低中央仓库负荷、节省外网带宽、以及提高项目稳定性等优点,使得私服在实际开发过程中得到了相当普遍地使用。

能够帮助我们建立私服的软件被称为 Maven 仓库管理器,主要有以下 3 种:

  • Apache Archiva
  • JFrog Artifactory
  • Sonatype Nexus

其中,Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。Nexus 分为开源版和专业版,其中开源版足以满足大部分 Maven 用户的需求。

Nexus 开源版具有以下特性:

  • 占用内存小(28 M 左右)
  • 具有基于 ExtJs 得操作界面,用户体验较好
  • 使用基于 Restlet 的完全 REST API
  • 支持代理仓库、宿主仓库和仓库组
  • 基于文件系统,不需要依赖数据库
  • 支持仓库索引以及搜索
  • 支持在界面上上传构件
  • 安全控制

Nexus 专业版需要付费购买,它主要包含一些企业级的高级特性,详情请参考 Sonatype Nexus 官方文档

Nexus下载和安装

目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,它们是并行的关系,目前使用最多,运行最稳定的是 Nexus 2.x,下面我们以 Nexus 2.x 为例,演示 Nexus 的安装过程。

1.  进入 Nexus 2.x 下载页面,根据本机操作系统,选择对应的版本进行下载,如下图所示。

 图1:Nexus 2.x 下载页面

2. 将下载 Nexus 安装包解压到本地磁盘,可获得 nexus-2.14.20-02 和 sonatype-work 2 个目录,如下图。

图2:Nexus 2.x 目录

其中:

  • nexus-2.14.20-02:该目录中包含了 Nexus 2.x 运行所需要的文件,如启动脚本、依赖 jar 包等。
  • sonatype-work:该目录中包含了 Nexus 2.x 生成的配置文件、日志文件等。

3. nexus-2.14.20-02 中包含以下目录及文件。

图3:nexus-2.14.20-02 目录及文件列表

nexus-2.14.20-02 目录说明,如下表所示。

子目录说明
bin 命令中心(启动命令,关闭命令)
conf 配置中心(管理着仓库列表、日志配置,以及安全设置)
lib Nexus 的库文件,Nexus 运行时需要的 jar 包所在的目录
logs 存放日志文件
nexus Nexus 应用程序
tmp 存放Nexus 运行时产生的临时文件


4. .进入 \nexus-2.14.20-02\bin\jsw 文件夹,根须操作系统版本选择合适的目录,由于我的操作系统是 Windows 10 64 位,所以我选择 windows-x86-64 目录,如下图所示。

图4:nexus-2.14.20-02\bin\jsw 目录列表

5. 进入 windows-x86-64 目录后可以看到如下文件。

图5:Nexus 启动文件列表

其中:

  • console-nexus.bat:启动 Nexus 并在 DOS 命令行中展示启动过程。
  • install-nexus.bat:将 Nexus 安装为 Windows 服务,开机自动启动。
  • start-nexus.bat:启动 Nexus。
  • stops-nexus.bat:停止 Nexus。
  • uninstall-nexus.bat:与 install-nexus.bat 相对应,负责卸载 Nexus 服务。

6. 双击运行 install-nexus.bat 安装 Nexus 服务,然后运行 start-nexus.bat 启动服务。

注意:

  • 运行 install-nexus.bat 安装服务,若提示”wrapper  | OpenSCManager failed - 拒绝访问。 (0x5)“,只要关闭窗口,以管理员身份运行即可解决。
  • 运行 start-nexus.bat 启动服务,若提示”wrapper  | OpenSCManager failed - 拒绝访问。 (0x5)“,只要关闭窗口,以管理员身份运行即可解决。

7. 访问 http://localhost:8081/nexus,结果如下图,则表示服务启动成功,否则表示服务启动失败。

图6:Nexus 首页

8. 点击首页右上角的“Log In”按钮,在登录页面输入用户名和密码(默认分别为:admin 和 admin123 ),最后点击“Log In”按钮登录。

图7:Nexus 登录界面

9. 登录成功后,结果如下图。

图8:Nexus 登录成功

Nexus仓库属性和分类

Nexus 作为一款 Maven 仓库管理器,仓库(Repository)自然是 Nexus 最核心的概念。Nexus 中提供了许多仓库概念,如代理仓库、宿主仓库以及仓库组等。Nexus 为每一种仓库都提供了丰富的配置参数,方便我们根据自身需要进行定制。

Nexus 仓库属性

点击左边导航栏中的 Repositories,可以看到 Nexus 自带的几个内置仓库,如下图所示。

图1:Nexus 内置仓库列表

在仓库列表中,每个仓库都具有一系列属性:

  • Type:仓库的类型,Nexus 中有 4 中仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)
  • Format:仓库的格式。
  • Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库
  • Repository Status:仓库的状态。
  • Repository Path:仓库的路径。


由图 1 可知,Nexus 2.x  默认创建了 6 个仓库,我们称它们为 Nexus 内置仓库。

  • Maven Central:该仓库用来代理 Maven 中央仓库,其策略为 Release,只会下载和缓存中央仓库中的发布版本的构件。
  • Releases:策略为 Release 的宿主仓库,用来部署公司或组织内部的发布版本构件。
  • Snapshots:策略为 Snapshot 的宿主仓库,用来部署公司或组织内部的快照版本构件。
  • 3rd party:策略为 Release 的宿主仓库,用来部署第三方发布版本构件,这些构件一般无法从任何远程仓库中获得。
  • Public Repositories:该仓库组将上述所有存储策略为 Release 的仓库聚合并通过统一的地址提供服务。

Nexus 仓库分类

Nexus 仓库按照类型(Type)区分,主要分为以下 3 个类型:

  • 代理仓库(proxy):用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。
  • 宿主仓库(hosted):又称 Nexus 本地仓库,该仓库通常用来部署本地项目所产生的构件。
  • 仓库组(group):用来聚合代理仓库和宿主仓库,为这些仓库提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的构件。

为了更加直观的理解仓库组、代理仓库和宿主仓库的概念,我们通过下图展示它们的用途和区别。

 由上图可知:

  • Maven 可以直接从宿主仓库中下载构件。
  • Maven 也可以从代理仓库中下载构件,代理仓库会从远程仓库下载并缓存构件。
  • Maven 还可以从仓库组中下载构件,仓库组会从其包含的宿主仓库和代理仓库中获取构件。

本节,我们将介绍如何创建自定义宿主仓库、代理仓库和仓库组,为后面的工作做准备。

创建 Nexus 宿主仓库

首先,我们需要创建两个宿主仓库,分别用来存储从本地上传到 Nexus 的 Snapshot 和 Release 版本的构件,操作步骤如下。

1. 点击左边导航栏中的 Repositories,如下图。

图1:Nexus 导航

2. 点击 Nexus 仓库列表上方的 Add... 按钮,在下拉菜单中选择 Hosted Repository,如下图。

图2:添加宿主仓库

3. 在宿主仓库配置界面,填写对应信息,然后点击 Save 按钮进行保存,如下图。

图3:配置宿主仓库

宿主仓库配置如下:

配置说明
Repository ID 仓库 ID。
Repository Name 仓库名称。
Repository Type 仓库的类型,如 hosted、proxy 等等。
Provider 用来确定仓库的格式,一般默认选择 Maven2。
Repository Policy 仓库的策略。
Default Local Storage Location 仓库默认存储目录,例如 D:\nexus-2.14.20-02-bundle\sonatype-work\nexus\indexer\bianchengbang_Snapshot_hosted_ctx。
Override Local Storage Location 自定义仓库存储目录。
Deployment Policy 仓库的部署策略。
Allow File Browsing 用来控制是否允许浏览仓库内容,一般选择 true
Include in Search 用来控制该仓库是否创建索引并提供搜索功能。
Publish URL 用来控制是否通过 URL 提供服务。
Not Found Cache TTL 缓存某构件不存在信息的时间,默认取值为 1440,表示若某一个构件在仓库中没有找到,在 1440 分钟内再次接收到该构件的请求,则直接返回不存在信息,不会再次查找。


4. 查看 Nexus 仓库列表,可以看到自定义的宿主仓库已经创建完成,如下图。

图4:Nexus 仓库列表

重复以上步骤,再创建一个名称为 bianchengbang_Release_hosted ,策略为 hosted 的宿主仓库。

图5:Nexus 仓库列表-宿主仓库

创建 Nexus 代理仓库

下面我们创建一个代理仓库,用来下载和缓存中央仓库的构件,操作步骤如下。

点击 Nexus 仓库列表上方的 Add... 按钮,在下拉菜单中选择 Proxy Repository,如图 5 所示。

图5:添加代理仓库

在代理仓库配置界面,填写对应信息,然后点击 Save 按钮进行保存,如图 6 所示。

 代理仓库配置中,仓库 ID、仓库名称、Provider、Policy 以及 Default Local Storage Location 等配置的含义与宿主仓库相同,不再赘述。需要注意的是,代理仓库的 Repository Type 的取值是 proxy

代理仓库配置如下表。

配置说明
Remote Storage Location 远程仓库或中央仓库的地址,它是 Nexus 代理仓库最重要得配置,必须输入有效值,通常取值为 https://repo1.maven.org/maven2/。
Download Remote Indexes 是否下载远程仓库的索引。
Auto Blocking Enabled 是否启用自动阻止,即当 Nexus 无法连接中央仓库或远程仓库时,是否一直等待。取值为 true 表示不再等待,直接通知客户端无法连接,并返回。
File Content Validation 是否启用文件内容校验。
Checksum Policy 配置校验和出错时的策略,用户可以选择忽略、警告、记录警告信息或拒绝下载等多种策略。
Artifact Max Age 构件缓存的最长时间,对于发布版本仓库来说,默认值为 -1,表示构件缓存后,就一直保存着,不再重新下载。对于快照版本仓库来说,默认值为 1440 分钟,表示每隔一天重新缓存一次代理的构件。
Metadata Max Age 仓库元数据缓存的最长时间。
Item Max Age 项目缓存的最长时间。


创建 Nexus 仓库组

下面我们将创建一个仓库组,并将刚刚创建的 3 个仓库都聚合起来,操作步骤如下。

点击仓库列表上方的 Add... 按钮,在下拉菜单中选择 Repository Group,如下图。

图7:Nexus 添加仓库组

在仓库组配置界面,填写对应信息,并将 bianchengbang_central_proxy、bianchengbang_Release_hosted 和 bianchengbang_Snapshot_hosted 3 个仓库添加到仓库组中,最后点击 Save 按钮进行保存,如下图。

图8:Nexus 仓库组配置

查看 Nexus 仓库列表,可以看到 bianchengbang_repository_group 仓库组已经创建完成,如下图。

 图9:Nexus 仓库列表-仓库组

ref:Nexus是什么 (biancheng.net)

posted @ 2021-09-02 16:37  Chen洋  阅读(10694)  评论(0编辑  收藏  举报