Nexus是Sonatype公司发布的一款强大的仓库(Repository)管理软件,常被用来搭建Maven私服,因此也被称为“Maven仓库管理器”。
Nexus 的Web界面:
Nexus的主要功能与优势
- 仓库管理:
- Nexus支持多种仓库类型,包括代理仓库(Proxy Repository)、私有仓库(Hosted Repository)和仓库组(Group Repository)。这些仓库类型可以满足不同的存储和管理需求。
- 作为Maven、NuGet、npm等工具的仓库服务器,Nexus允许用户在本地网络中共享和管理依赖项和构件,提高开发效率并节省外部带宽。
- 提供了对构件的上传、下载、搜索和管理的全面支持,支持多种协议和工具,如Maven、Docker、npm等。
- 加速构建过程:
- Nexus可以作为本地仓库,缓存远程仓库中的组件,减少从远程仓库下载依赖的时间,从而加快构建速度。
- 节省带宽资源:
- 通过使用Nexus私服,可以避免每次构建时都从中央仓库下载相同的依赖,有效节省网络带宽。
- 提高稳定性和安全性:
- Nexus私服可以在中央仓库不可用时提供稳定的服务,确保团队内部的稳定性。
- 同时,Nexus还提供了细粒度的用户权限控制,可以限制访问和操作仓库的权限,提高安全性。
- 部署和分发:
- Nexus支持部署软件组件到私有仓库,方便进行发布和分发。
Neuxs安装与配置
- 安装环境:
- Nexus可以在多种操作系统上安装,包括Linux和Windows。
- 安装过程通常涉及下载相应版本的安装包,解压到指定目录,并按照指南进行配置。
- 配置方式:
- Nexus提供了基于Web界面的配置方式,用户可以通过友好的UI进行仓库的配置和管理。
- 同时,Nexus也支持通过Docker镜像的方式进行安装和部署,为不同环境提供了更多的灵活性。
Nexus使用场景
Nexus广泛应用于各种开发环境中,特别是在需要管理和分发大量软件组件的场合。它可以帮助开发团队减少对外部仓库的依赖,提高构建效率和稳定性。同时,Nexus还支持对构件的上传、下载和搜索进行控制和审计,有助于维护组织内部的安全和合规性。
Nexus 的版本
Nexus存在多个版本,其中Nexus 2.x和Nexus 3.x是Sonatype公司开发的两个主要版本。它们之间存在一些显著差异:
- 存储引擎:Nexus 3引入了一个全新的存储引擎(Nexus Blob Store),为Nexus 3带来了更高效的存储管理和更好的性能。
- 新特性:Nexus 3.x相比Nexus 2.x提供了更多的实用新特性,增强了用户体验,并提高了对Maven等工具的支持稳定性。
- 升级过程:从Nexus 2.x升级到Nexus 3.x需要先升级到一个特定的2.x版本,以避免兼容性问题。
Nexus 目前的最新版本是: nexus-3.72.0-04。
Nexus 仓库 Repository
仓库类型
- group : 仓库聚合。可以包含多个仓库, 访问顺序取决与配置顺序,默认: Releases , Snapshots, Central
- hosted: 私有仓库, 内部项目的发布仓库, 用来存储自己生成的 jar
- snapshots : 本地项目的快照仓库
- releases : 本地项目发布的正式版本
- proxy: 代理类型, 从远程仓库获取, 例如 阿里云Maven仓库
- central : 中央仓库
releases 和 snapshots 的区别
- snapshots 保存开发过程中的不稳定版本, 有更新就下载
- releases 正式仓库保存稳定的发行版本,服务器上有更新, 同版本也不会更新。
Blob Store 是什么
Repository是需要存储的, nexus 以 Blob格式存储,Blob Stores 可以被一个或者多个仓库或者仓库组使用。
默认,Blob Stores 是基于文件系统的,理解为服务器上的一个目录。
Blob, Binary Large Object,二进制大型对象。
Blob 可以存储任何二进制数据,包括图像、音频、视频、文档等。
Blob是一个非常有用的数据类型, 可以用于处理二进制数据, 特别是在与数据库等数据存储和传输相关的场景中应用广泛。
默认存在一个名为 “default” , 类型为 “File” 的Blob Store。
Blob Store 的参数:
- Name : 名称 , 唯一
- Type: 类型,一般为File
- Blob Count , Blob 的数量
- Total Size: 目前存储的大小
- Available Space: 可用的空间
新建Blob Store
- Type: S3, 亚马逊 S3云存储。
- Path,填入Name之后, Path 会自动生成
Nexus支持的软件语言包
Nexus支持的软件语言包的格式如下:
以部分主要软件包格式来看:
-
Maven:Maven是Java生态系统中广泛使用的构建和项目管理工具。Maven项目通过pom.xml文件来管理依赖关系和构建配置。Nexus支持Maven仓库,允许用户存储和管理Maven项目的构件,如JAR包、WAR包等。
-
npm:npm是Node.js的包管理器,用于Node.js应用的包安装、版本管理和依赖管理。npm包通过package.json文件来描述包的元数据和依赖关系。Nexus可以通过配置npm仓库来支持npm包的存储和分发。
-
Docker:Docker是一个开放源代码的软件容器平台,用于构建、运行和分发应用。Docker镜像可以被视为一种特殊的软件包,包含了应用及其所有依赖。Nexus支持Docker仓库,允许用户存储和分发Docker镜像。
-
NuGet:NuGet是.NET平台的包管理器,专门用于.NET项目的包安装、版本控制和依赖管理。NuGet包通常以.nupkg文件的形式存在,这是一个ZIP格式的压缩包,包含了包的元数据、依赖关系以及实际的程序集。Nexus支持NuGet仓库,允许.NET开发者存储和管理NuGet包。
-
PyPI:PyPI(Python Package Index)是Python的包索引,类似于npm或Maven中心仓库。它包含了成千上万的Python包,允许开发者通过pip等工具进行安装和管理。Nexus可以通过配置PyPI仓库来支持Python包的存储和分发。
-
Yum:Yum是Fedora和Red Hat Enterprise Linux等Linux发行版中使用的包管理器。它基于RPM包管理,提供了更高级的软件包管理能力,如依赖解决和自动更新。Nexus可以通过配置Yum仓库来支持RPM包的存储和分发。