企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-05仓库管理

亲历的企业级微服务的完整构建过程-系列文章目录

本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长。以下为该系列所有文章的链接:

  1. 搭建和使用Maven私有仓库(Nexus)(更新中。。。)
  2. API网关(待发布)
  3. 认证中心(待发布)
  4. Redis框架(待发布)
  5. RabbitMQ(待发布)
  6. MyBatis(待发布)
  7. Web模块(待发布)
  8. 低代码(待发布)
  9. Core
    1. JSON工具类(待发布)
    2. 日期工具类(待发布)
    3. String工具类(待发布)
    4. Number工具类(待发布)
    5. Spring操作工具类(待发布)
    6. API结构统一封装(待发布)
  10. 监控和告警(待发布)
  11. MongoDB(待发布)

搭建和使用Maven私有仓库(Nexus)-系列文章目录

说明:

  • 以下部分模块,绝大多数人,在日常工作中都是用不到的,所以我就没有介绍,毕竟时间是最重要的成本,没必要花大量时间在我们用不到的内容上。
  • 下面的“1 通用”章节,系列文章中的每一篇内容都相同,介绍一些背景、约定和官网链接等,大家只要知道这些内容了,就不用每篇文章都去看了。
  1. 安装步骤
  2. 登录和界面
  3. 备份和恢复
  4. 管理:讲述了Nexus的管理功能,包括用户管理、权限管理、任务管理等
    1. 管理菜单
    2. 仓库管理
    3. 格式(Formats)(暂时用不到,略)
    4. 分期(Staging)(暂时用不到,略)
    5. 标记(Tagging)(暂时用不到,略)
    6. Maven和Jenkins插件(暂时用不到,略)
    7. 任务(Tasks)
    8. 访问控制
      1. 领域(Realms)管理
      2. 权限(Privileges)管理
      3. 角色(Roles)管理
      4. 用户(Users)管理
      5. 默认角色(Default Role)管理
      6. 内容选择器(Content Selectors)管理
    9. 用户认证(暂时用不到,略)
    10. 能力(Capabilities)(暂时用不到,略)
    11. 节点(Nodes)
    12. 配置SSL
    13. HTTP和HTTPS请求和代理设置(暂时用不到,略)
    14. 电子邮件服务器配置
    15. 重试限制配置(暂时用不到,略)
    16. 审计
    17. 安装和更新许可证
    18. 支持功能
  5. 使用Nexus仓库:讲述了使用(而非管理) Nexus Repository 的方方面面的知识
    1. 仓库管理器概念:使用 Nexus 需要先理解一些概念,该节内容提供了必要的背景和知识
      1. 组件、仓库和仓库格式(暂时用不到,略)
      2. 一个示例 - Maven 仓库格式(暂时用不到,略)
      3. 管理仓库(暂时用不到,略)
      4. 软件供应链自动化(暂时用不到,略)
      5. 代理仓库概念(暂时用不到,略)
    2. 用户界面概述
    3. 搜索组件(暂时用不到,略)
    4. 浏览仓库和仓库组
    5. 管理当前登录用户的资料
    6. 上传组件
    7. 查看标签(仅可用于Pro版本,略)
  6. 集成(主要讲述了如何使用 APIs 和 集成外部工具)(暂时用不到,略)
  7. Maven中配置和使用Nexus


正文

1 通用

1.1 前言

在构建微服务之前,需要先做一些准备工作,比如Maven私有仓库的管理。因为有些微服务模块是作为公共组件被其他微服务引用的,这些公共的微服务,就要设置为依赖,并用Maven仓库管理起来,将自定义的依赖上传到Maven中央仓库并不是一个明智的选择。原因有3个:

  1. 最重要的是隐私和安全问题,我们不可能把企业内部开发的组件上传到公共网络,让所有人能够随便下载;
  2. 上传很麻烦,上传方法详见 https://blog.csdn.net/agonie201218/article/details/124800163
  3. 可能不允许上外网,则无法上传;
  4. 可能会有网络延迟、上传缓慢的问题。
  5. 降低了中央仓库的负担。

综上,我们最好是搭建自己的私有Maven仓库,而当前最流行的就是 Sonatype Nexus Repository Manager,以下简称 Nexus

1.2 约定

  1. 我使用的版本是 OSS 3.40.1-01,整个系列的文章都是在该版本上展开介绍,你们可能使用的是 Pro 版,少数模块是我的 OSS 版上没有的。不过一般使用的话,OSS 版已经够用了
  2. 文中出现的 Repository ,中文称之为“仓库”
  3. 文中出现的变量 $install-dir,值为 /opt/sonatype/nexus
  4. 文中出现的变量 $data-dir,值为 /opt/sonatype/sonatype-work/nexus3 ,或 /nexus-data,两者都是在docker容器nexus中的路径,一个是软链接,一个是实际路径
  5. 文中出现的变量 ${jetty.etc},值为 /opt/sonatype/nexus/etc/jetty
  6. NXRM:Nexus Repository Manager,即 Nexus 仓库管理器
  7. RBAC:Role-Based Access Control,即 基于角色的访问控制

1.3 官方文档

提供Nexus的官方文档:https://help.sonatype.com/repomanager3/
官方文档包含了系统要求、搭建方法,以及各种操作方法等,内容已经非常全面了。

2 仓库管理

仓库是提供给用户的组件的容器。
仓库的二进制部分存储在 blob 存储中。

2.1 仓库类型

  1. Proxy Repository
    代理仓库,是链接到远程仓库的仓库。对组件的任何请求都会根据代理仓库的本地内容进行验证。如果没有找到本地组件,则将请求转发到远程仓库。然后检索该组件并将其本地存储在仓库管理器中,该仓库管理器充当缓存。然后从本地存储满足对同一组件的后续请求,因此消除了再次从远程仓库检索组件的网络带宽和时间开销。

    默认情况下,仓库管理器附带以下配置的代理仓库:

    maven-central
    此代理仓库访问 Central Repository,以前称为 Maven Central。它是内置在 Apache Maven 中的默认组件仓库,并受到 Gradle、SBT 或 Ant/Ivy 等其他构建工具的良好支持。

    nuget.org-proxy
    此代理仓库访问 NuGet Gallery。它是用于 .Net 开发的 nuget 包管理工具使用的默认组件仓库。(因为我是用Java开发,暂时忽略该项)

  2. Hosted Repository
    托管仓库,将组件存储在仓库管理器中,而仓库管理器是这些组件的权威存储位置。

    默认情况下,仓库管理器附带以下配置的托管仓库:

    1. maven-releases
      此托管仓库使用maven2仓库格式和发布版本策略。它旨在成为你的组织发布内部版本的仓库。你还可以将此仓库用于外部仓库中不可用的第三方组件,因此无法通过配置的代理仓库进行检索。这些组件的示例可以是商业专有库,例如你的组织可能引用的 Oracle JDBC 驱动程序。

    2. maven-snapshots
      此托管仓库使用maven2仓库格式和快照版本策略。它旨在成为你的组织发布内部开发版本(也称为快照)的仓库。

    3. nuget-hosted
      此托管仓库是你的组织可以使用nuget仓库格式在仓库中发布内部版本的地方。你还可以将此仓库用于外部仓库中不可用的第三方组件,这些组件可能被代理以获得对组件的访问权限。(因为我是用Java开发,暂时忽略该项)

  3. Repository Group
    仓库组,代表了 Nexus Repository Manager 的一项强大功能。它们允许你在单个仓库中组合多个仓库和其他仓库组。这反过来意味着你的用户可以依赖单个 URL 来满足他们的配置需求,而管理员可以添加更多仓库(以及组件)到仓库组。

    仓库管理器附带以下组:

    1. maven-public
      是maven2格式仓库的仓库组,它将中央仓库的重要外部代理仓库与托管仓库 maven-releases 和 maven-snapshots结合在一起。这允许你将中央仓库的组件以及你的内部组件公开在一个单一的、易于使用的仓库和 URL 中。

    2. nuget-group
      该组将nuget格式的仓库 nuget-hosted 和 nuget.org-proxy 组合到一个仓库中,用于使用 NuGet 进行 .Net 开发。(因为我是用Java开发,暂时忽略该项)

2.2 管理仓库和仓库组

要访问该模块,用户必须拥有 nx-allnx-repository-admin 权限。

  1. 仓库列表
    下图是仓库列表,列出了所有的仓库和仓库组:

    列表中每一列的含义:
  • Name - 仓库或仓库组的唯一名称
  • Type -仓库的类型,其值为 proxyhostedgroup
  • Format - 用于存储在仓库中的仓库格式,如 maven2、nuget 或 其他
  • Status - 仓库的状态以及有关状态的更多信息。正常运行的仓库将显示状态为 Online
  • URL -复制按钮会提示一个对话框,其中包含公开仓库的直接 URL 路径
  • Health Check -显示来自先前运行的 Repository Health Check 的仓库健康统计分析信息,或用于开始分析的按钮
  1. 仓库详情

下图是2个仓库的详情页面:

其中:

  • Online:设置此仓库是否可用于客户端工具

  • Storage:每个仓库都需要配置一个 blob store 来确定组件的存储位置。下拉列表允许你从所有已配置的 blob store 中进行选择。关于创建 blob store 的文档可在Storage Guide 中找到。
    Strict Content Type Validation 允许你激活验证,来检查发布到仓库中的所有文件的 MIME 类型,以符合特定仓库格式的允许类型。

  • Hosted:包括托管配置部分中的部署策略配置。它的设置控制托管仓库如何允许或禁止组件部署。
    该项只有在 Typehosted 的 Repository 中才有。

    如果策略设置为 Read-only,则不允许部署。

    如果此策略设置为 Disable redeploy,则客户端只能部署一次特定组件,任何再次部署组件的尝试都将导致错误。禁用重新部署是默认值,因为大多数客户端工具假定组件是不可变的,并且不会检查仓库中已在本地检索和缓存的已更改组件。

    如果策略设置为 Allow redeploy,客户端可以将组件部署到此仓库并在后续部署中覆盖相同的组件。

    如果你使用复制,此策略会自动设置为仅通过复制部署。 这将阻止所有部署到托管仓库,但内部复制机制除外。你不应手动将此策略设置为 Deploy by Replication Only。如果你禁用复制,Nexus Repository 会自动恢复你之前的部署策略。

  • HTTP:配置访问远程仓库所需的详细信息
    包括:AuthenticationHTTP request settings

  1. 仓库组详情

    仓库组和仓库的配置类似,仓库组多了一个 Group 的配置项,配置哪些仓库需要成为 该仓库组的成员。左侧是所有可用的仓库,右侧是所有的配置过来的成员。大家一看就懂了。

2.3 Blob Stores

是组件及其资产的二进制部分的内部存储机制。它们可以是本地文件系统或基于云(使用 Amazon S3(Pro 和 OSS)或 Microsoft Azure(仅限 Pro))。每个 blob store 可用于一个或多个仓库和仓库组。你可以在 存储指南 中了解有关 blob 存储以及 如何配置 它们以及 规划存储策略 的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置Maven私有仓库,可以使用Sonatype Nexus 3作为Maven仓库管理器。 以下是配置Nexus 3作为Maven私有仓库的步骤: 1. 安装Nexus 3 可以从Sonatype官网下载Nexus 3,然后按照说明进行安装和配置。 2. 创建Maven仓库Nexus 3中创建Maven仓库,可以通过以下步骤完成: - 登录到Nexus 3的Web界面,并进入“Repositories”页面。 - 点击“Create Repository”按钮,并选择“Maven(hosted)”类型。 - 输入仓库的名称和URL,并选择存储位置等配置信息。 - 点击“Create Repository”按钮,完成仓库创建。 3. 配置MavenMaven的settings.xml文件中配置Nexus 3作为私有仓库,可以通过以下步骤完成: - 打开Maven的settings.xml文件,一般位于${user.home}/.m2/目录下。 - 在<settings>标签内添加如下配置: ``` <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://nexus3.example.com/repository/maven-releases/</url> </mirror> </mirrors> ``` 其中,nexus3.example.com/repository/maven-releases/是Nexus 3仓库的URL。 4. 发布和使用Maven包 在使用Nexus 3作为Maven私有仓库时,可以通过以下步骤发布和使用Maven包: - 在项目的pom.xml文件中配置Nexus 3仓库的URL等信息。 - 使用Maven命令发布项目的Maven包到Nexus 3仓库中。 - 在其他项目的pom.xml文件中添加Nexus 3仓库的URL,然后使用Maven命令从Nexus 3仓库中获取依赖。 以上是配置Nexus 3作为Maven私有仓库的基本步骤,具体操作可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值