Maven实战-第二十一篇(Nexus中的仓库)

Maven实战-第二十一篇(Nexus中的仓库)

在上一篇中我们介绍了Nexus中有关安装的内容,并且也简单介绍了Nexus中有很多仓库。在这一篇中我们将详细介绍一下有关Nexus中仓库的内容。我们知道Nexus的目的就是方便我们管理Maven的组件。但Maven的组件非常多。为了更好的方便管理,Nexus内置了很多种仓库类型。主要包括代理仓库、宿主仓库和仓库组等。并且每一种仓库都提供了特有的特征,方便我们不同场景的使用。下面我们详细介绍一下它们之间的区别。

一、内置的仓库

在Nexus中有很多内置的仓库,既然是内置仓库,所以很容易理解就是Nexus为我们默认创建的仓库。它们主要包括以下几种:

  • Maven Central:该仓库代理Maven中央仓库,其策略为Release,因此只会下载和缓存中央仓库中的发布版本构件。
  • Releases:这是一个策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件。
  • Snapshots:这是一个策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件。
  • 3rd party:这是一个策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件。
  • Apache Snapshots:这是一个策略为Snapshot的代理仓库,用来代理Apache Maven仓库的快照版本构件。
  • Codehaus Snapshots:这是一个策略为Snapshot的代理仓库,用来代理Codehaus Maven仓库的快照版本构件。
  • Google Code:这是一个策略为Release的代理仓库,用来代理Google Code Maven仓库的发布版本构件。
  • ava.net-Maven 2:这是一个策略为Release的代理仓库,用来代理java.net Maven仓库的发布版本构件。
  • Public Repositories:该仓库组将上述所有策略为Release的仓库聚合并通过一致的地址提供服务。
  • Public Snapshot Repositories:该仓库组将上述所有策略为Snapshot的仓库聚合并通过一致的地址提供服务。

二、仓库的分类

上面的内容就是Nexus中内置仓库,通过下图,我们发现这些不同的内置仓库中有一些属性是不一样的。

Maven实战-第二十一篇(Nexus中的仓库)

下面我们按照上图所示,介绍一下上面列表中的属性含义。

  • Name: 也就是内置仓库的名称。
  • Type: 此属性为内置仓库的类型,在Nexus中一共有4中类型,它们分别是。
    • group:仓库组,用来聚合其它仓库的,本身不提供组件下载的能力,通过代理其它仓库提供能力,通过仓库组可以对外提供统一的地址,方便我们配置。
    • hosted:宿主仓库,也就是本地仓库,通常用来部署本地项目或者本公司的依赖。
    • proxy:代理仓库,可以用来代理远程的公共仓库,例如Maven的中央仓库,或者是阿里云的仓库。
    • virtual:虚拟仓库,最初是为了兼容Maven 1而设计的,但现在通过虚拟仓库,可以聚合多个本地仓库,并支持缓存,数据复制,版本控制等功能。
  • Format: 仓库的格式,主要有maven2、maven1和nuget。

三、Nexus创建仓库

下面我们介绍一下,如何通过Nexus创建仓库。

3.1、创建Nexus宿主仓库

首先我们先看一下,如何创建宿主仓库。我们需要登陆管理员账号,否者将看不到配置的选项。

Maven实战-第二十一篇(Nexus中的仓库)

我们使用管理员账号登陆之后,会发现最上面多了一个齿轮的小图标,我们点击一下这个齿轮图标的链接。

Maven实战-第二十一篇(Nexus中的仓库)

点击完成后,我们选择Repositories链接,这里我们可以选择左边菜单的链接,也可以选择上面的快捷导航,这里我选择的是快捷导航。

Maven实战-第二十一篇(Nexus中的仓库)

点击完成后,我们会看到我们之前看到的Nexus中内置的所有仓库的列表信息。

Maven实战-第二十一篇(Nexus中的仓库)

然后我们点击左边的Create Repositories 按钮。

Maven实战-第二十一篇(Nexus中的仓库)

当我点击完成后,会显示有很多仓库的类型,因为我们是要创建的是宿主仓库,所以我们选择maven2(hosted)

Maven实战-第二十一篇(Nexus中的仓库)

下面的内容就是创建宿主仓库的一些信息,下面我们详细介绍一下:

Maven实战-第二十一篇(Nexus中的仓库)

有一些参数,我们默认就可以,不需要进行任何修改,后续的内容中,我们将详细介绍一下每一个参数具体的作用,这里我们先介绍只需要我们设置的参数。

  • Name

仓库的名称。我们在设置仓库名称的时候,最好加上仓库的类型来命名,这样通过名称我们就可以很方便的知道这个仓库是什么类型的仓库了。


  • Online

我们可以通过此参数来禁用或者启用我们的仓库。


  • Version policy

仓库的版本策略。之前我们介绍过,在Maven中是分稳定版本和快照版本的,所以为了我们使用方便Nexus在创建仓库的时候,可以配置这个仓库的版本策略。下面是这个参数具体的配置。

1、Release:当我们配置成Release:参数时,则该仓库只能下载稳定版本的依赖。
2、Snapshot:当我们配置成:Snapshot时,则只能下载快照版本依赖。
3、mixed:当我们不想区分稳定版本和快照版本时,则可以配置成:mixed参数。


  • Deployment policy

仓库的部署略略。具体的参数配置如下:

1、Disable redeploy:禁用重新部署
2、Allow redeploy:允许重新部署
3、Read-only:只读
4、Deploy by Replication Only:仅通过复制部署


Maven实战-第二十一篇(Nexus中的仓库)

当我们完成上面的配置后,我们点击Create repository按钮。Nexus就会自动跳转到我们仓库的列表页,并且也会直接显示出我们刚刚创建的仓库的信息。

Maven实战-第二十一篇(Nexus中的仓库)


3.2、创建Nexus代理仓库

下面我们介绍一下,如何创建代理仓库,因为我们已经了解了宿主仓库的如何创建了,所以这次我们简单介绍一下。创建代理仓库和宿主仓库不同,这里我们需要选择maven2(proxy)参数,创建仓库。

Maven实战-第二十一篇(Nexus中的仓库)

下面我们介绍一下和宿主仓库不同的地方,既然是代理仓库,所以需要我们配置想要代理的仓库的地址。也就是Remote storage参数。这里我们配置了,阿里云的仓库地址,这样当我们这个仓库配置成功后,就可以代理阿里云的仓库了。
Maven实战-第二十一篇(Nexus中的仓库)

同样的,我们创建完成后,点击创建按钮后,Nexus就会在列表中显示我们创建的代理仓库信息。

Maven实战-第二十一篇(Nexus中的仓库)

3.3、创建Nexus仓库组

下面我们介绍一下如下创建仓库组。创建仓库组时需要我们选择maven2(group)参数。

Maven实战-第二十一篇(Nexus中的仓库)

下面我们配置一下Member repositories参数,因为我们创建的是仓库组,所以我们这里需要选择,我们这个仓库组中都包括哪些仓库。这里我们选择了,我们刚刚创建成功的宿主仓库和代理仓库。也就是如下图所示:

Maven实战-第二十一篇(Nexus中的仓库)

同样的当我们成功创建仓库组后,Nexus就会在仓库列表中显示。

Maven实战-第二十一篇(Nexus中的仓库)

四、Nexus中的搜索

上面的内容中,我们介绍了如何通过Nexus创建我们自定义的仓库,并且我们可以通过这个自定义的仓库来下载我们指定的依赖组件。但Nexus除了提供上述的功能外,还提供了组件搜索的功能。我们回想一下,在没有Nexus之前,如果想找一个依赖组件时,只能去官方网站上去寻找。如果是本地的依赖组件,则需要去系统的目录中去查询。但有了Nexus之后一切都会变的非常的简单。我们可以直接使用Nexus提供的管理界面进行搜索我们想要的组件,并且Nexus还提供了索引的功能,方便我更快的检索我们想要的组件。具体的操作如下:

我们点击左侧菜单中的Search菜单,然后我们选择Maven。Nexus就会显示出所有的依赖列表。

Maven实战-第二十一篇(Nexus中的仓库)

然后我们可以通过GroupId、ArtifactId、Version等参数来快速的检索我们想要的组件。

Maven实战-第二十一篇(Nexus中的仓库)

我们搜索一下,我们之前介绍过的组件junit组件,当我们输入完后,Nexus就会显示出所有junit组件的不同版本的信息。

Maven实战-第二十一篇(Nexus中的仓库)


以上内容就是Nexus中有关仓库的内容,下一篇中我们将介绍一下,如何使用Nexus中的依赖组件,以及如何上传我们自己的组件到Nexus中。

给TA打赏
共{{data.count}}人
人已打赏
Maven

Maven实战-第二十篇(Nexus创建私服)

2023-8-15 7:05:30

Maven

Maven实战-第二十二篇(部署组件到Nexus)

2023-8-24 20:16:40