一、简介

Sonatype Nexus Repository Manager 是一款强大的仓库管理工具,用于存储、管理和发布软件组件。它能够支持多种格式的仓库,如 Maven、npm、Docker 等。在企业开发中,私有 Maven 仓库常用于存储自定义依赖和发布组件,确保代码安全性和内部共享。

本文将从服务器环境搭建、Nexus 安装与配置、仓库创建、依赖上传,再到 Maven 项目中使用私有仓库的全过程,帮助你掌握如何高效管理 Maven 依赖。

二、 Nexus 安装

2.1 系统要求

操作系统:Linux 或 Windows(推荐使用 Linux,如 CentOS、Ubuntu)
Java JDK:Nexus 需要 Java JDK 8 以上版本支持(推荐 JDK 17)。
硬件需求:至少 4GB 内存,50GB 硬盘空间,取决于你要管理的包的数量。

2.2 Nexus 安装步骤

下面介绍linux Centos 下的安装,其他类似

2.2.1 下载 Nexus Repository Manager

前往 Sonatype Nexus 官网 下载最新版的 Nexus Repository Manager:

wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz

2.2.2 安装与配置

解压安装包:

tar -zxvf latest-unix.tar.gz

进入解压目录,启动 Nexus:

注意把 <version> 替换 实际版本号

cd nexus-<version>

./bin/nexus start

设定 Nexus 为系统服务,以便服务器启动时自动启动:

ln -s /path/to/nexus-<version>/bin/nexus /etc/init.d/nexus

浏览器访问 http://<服务器IP>:8081,默认端口是 8081。初次登录使用默认管理员账户:

用户名:admin
密 码:admin123(第一次登录后系统会强制要求更改密码)
新版本会有个文件存放初始化的密码

三、Nexus 基本配置

3.1 初次登录与管理界面介绍

进入 Nexus 后,会看到以下几个重要的模块(不同版本功能菜单位置可能不同):
Repositories(仓库):管理各种格式的仓库,包括 Blob Store(存储)、仓库清理策略配置等功能。
Security(安全设置):管理用户、角色和权限。
System(系统设置):配置 Nexus 服务器的高级设置,包括定时任务、允许管理员配置和管理系统功能,从而扩展和优化 Nexus 的使用体验等功能。

3.2 创建用户和角色

在 Nexus 界面,选择 Security > Users,可以添加新用户。
可以设置不同角色的权限,如管理员、开发者等。
通过配置不同角色,可以控制哪些用户可以上传或下载依赖,确保仓库安全。

iform 平台建议 用户和角色,可以根据实际来

3.2.1 建议角色

anke-role 上传/下载依赖的角色

##  授权一下菜单权限
nx-repository-view-*-*-*
nx-repository-view-*-*-add
nx-repository-view-*-*-browse
nx-repository-view-*-*-delete
nx-repository-view-*-*-edit
nx-repository-view-*-*-read

3.2.2 建议用户

anke-nexus 授权anke-role 角色给它

3.2.3 禁用匿名访问

使用人少的话可以不禁用

四、 创建 Maven 仓库

4.1 创建 Releases 和 Snapshots 仓库

Nexus 提供了多种仓库格式,本次主要配置Maven 仓库,区分发布版(Releases)快照版(Snapshots)

1)点击 Repositories,选择 Create repository

2)选择 Maven2 (hosted),创建发布版本仓库:

如果仓库有就不需要建了

Repository ID:maven-releases
Version policy:Release
Deployment policy:Disable redeploy
Blob store: default

3)创建 Snapshots 仓库,注意选择 Version policy 为 Snapshot。

如果仓库有就不需要建了
Repository ID:maven-snapshots
Version policy:snapshots
Deployment policy:Allow redeploy
Blob store: default

4)同样方式创建 阿里云代理(proxy) 仓库。

1、Aliware-edas

name: Aliware-edas
type:proxy
url:http://maven.ankepower.com/repository/Aliware-edas/
Version policy:Release
Layout policy:Permissive
Remote Storage: http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository/

2、aliyun-public

name: aliyun-public
type:proxy
url:http://maven.ankepower.com/repository/aliyun-public/
Version policy:Release
Layout policy:Permissive
Remote Storage: http://maven.aliyun.com/nexus/content/groups/public/

5)创建中央和阿里等仓库没有的 thirdparty 仓库,注意选择 Version policy 为 Release。

该仓库是中央和阿里等仓库没有的 thirdparty 仓库,比如达梦数据库驱动(dm.jdbc)

6)最后,创建一个 Group 仓库,用于将多个仓库(如 Snapshots、Releases、以及其他远程仓库)整合在一起

4.2 [可选]配置 Blob Store 和 Cleanup 策略

1)Blob Store 用于存储上传到 Nexus 的组件。可以配置多个 Blob Store 来管理不同类型的数据,减少存储开销。

2)设置 Cleanup 策略,定期清理不再需要的快照版本,节省存储空间。

五. 上传与管理依赖包

5.1 手动上传依赖包

  1. 登录 Nexus 后,选择 Browse server contents,点击Upload,选择创建的 Releases 仓库。
  2. 填写上传的坐标信息(groupId、artifactId、version 等)并选择相应的文件进行上传。
  3. 点击 Upload 完成上传操作。


PS:这里主要上传中央仓库和阿里云仓库没有的jar包

5.2 使用 Maven 命令行上传

选看:平台已经配置好相关的配置

Maven 提供了上传依赖的命令行工具,通过配置项目的 pom.xml 文件,可以直接上传到 Nexus 仓库。

在 pom.xml 中配置 distributionManagement:

<distributionManagement>
  <repository>
    <id>nexus-releases</id>
    <url>http://<服务器IP>:8081/repository/maven-releases/</url>
  </repository>
  <snapshotRepository>
    <id>nexus-snapshots</id>
    <url>http://<服务器IP>:8081/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>

使用以下命令将组件上传到 Nexus:

mvn deploy

六. Maven 项目依赖配置

6.1 配置 Maven settings.xml

为了让 Maven 优先使用配置的私有仓库,可以在 settings.xml 中添加私有仓库的配置[该setting.xml文件]

maven依赖加载顺序:

优先从nexus 的maven-public仓库组中获取依赖,maven-public中仓库依赖加载顺序为:maven-public -> maven-releases
nexus maven public仓库组中找不到依赖情况下,从阿里云仓库加载。

作者:hugh  创建时间:2024-12-13 09:59
最后编辑:hugh  更新时间:2025-01-23 13:52