Maven 私服 Nexus 升级实录

摘要

升级过程说明

  • Nexus 从 3.71.x 开始,不再支持 OrientDB,后续版本仅支持 H2PostgreSQL ,根据官网说明3.70.x 以下的版本需要将 Nexus 先升级到 3.70.x 的最新版本,然后使用官方提供的数据库迁移工具,将数据库迁移到 H2 后,再升级到 3.71.x 以后的版本

3.29.2-02 升级到 nexus-3.70.4-02

安装 OpenJDK

  • 需要先安装好 OpenJDK,原因是Nexus的数据库迁移工具仅支持 OpenJDK,不支持 Oracle JDK,我这里选择安装 OpenJDK11

1
2
3
4
5
6
cd /usr/local
curl -O https://mirrors.tuna.tsinghua.edu.cn/Adoptium/11/jdk/x64/linux/OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz
tar -zxvf OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz
ln -s /usr/local/jdk-11.0.28+6/bin/java /usr/bin/java
export JAVA_HOME=/usr/local/jdk-11.0.28+6
export PATH=$JAVA_HOME/bin:$PATH

安装 nexus-3.70.x

  • 目前官网发布的nexus-3.70.x的最新版本为 nexus-3.70.4-02下载页面,其对应的数据库迁移工具也可以从该页面下载。

  • 这里我们选择 Java 11 的版本

1
2
3
4
5
6
7
8
9
10
11
# 切换到 nexus 用户,原 nexus-3.29.2-02 就安装在 该用户的 `home` 目录下
su - nexus
# 关闭 原 nexus 服务
~/nexus3/bin/nexus stop
# 需要科学上网
curl -O https://download.sonatype.com/nexus/3/nexus-3.70.4-02-java11-unix.tar.gz
tar -zxvf nexus-3.70.4-02-java11-unix.tar.gz
rm -f ~/nexus3
ln -s /usr/local/nexus-3.70.4-02 ~/nexus3
# 启动 nexus
~/nexus3/bin/nexus start

迁移数据到 H2

  • 下载数据库迁移工具

1
2
3
4
mkdir ~/backup
cd ~/backup
# 与 nexus 版本一致
curl -O https://download.sonatype.com/nexus/nxrm3-migrator/nexus-db-migrator-3.70.4-02.jar
  • 登录 Nexus 导出数据: 设置 -> System -> Tasks -> Create task -> Admin - Export databases for backup

  • 任务创建后点击Run,即可在 /home/nexus/backup 目录下看到备份文件

1
2
3
4
5
6
ll /home/nexus/backup
-rw-rw-r-- 1 nexus nexus 121066 Sep 8 07:25 analytics-2025-09-08-07-25-57-3.70.4-02.bak
-rw-rw-r-- 1 nexus nexus 19349428 Sep 8 07:25 component-2025-09-08-07-25-57-3.70.4-02.bak
-rw-rw-r-- 1 nexus nexus 266208 Sep 8 07:25 config-2025-09-08-07-25-57-3.70.4-02.bak
-rw-r--r-- 1 nexus nexus 56809625 Sep 8 06:41 nexus-db-migrator-3.70.4-02.jar
-rw-rw-r-- 1 nexus nexus 132802 Sep 8 07:25 security-2025-09-08-07-25-57-3.70.4-02.bak
1
2
3
4
5
6
7
# 开始迁移前需要先关闭 nexus 服务
~/nexus3/bin/nexus stop
# 进入备份目录
cd /home/nexus/backup
# 这里要使用 OpenJDK 11 运行,根据需要适当调整内存参数
java -Xmx2G -Xms2G -XX:+UseG1GC -jar nexus-db-migrator-3.70.4-02.jar --migration_type=h2
# 运行后会提示你迁移数据库前需要先关闭 nexus 服务,我们输入 y 继续
  • 运行成功后会生成 nexus.mv.db,将其移动到 /home/nexus/sonatype-work/nexus3/db/ 目录下

1
mv nexus.mv.db /home/nexus/sonatype-work/nexus3/db/
  • 编辑/home/nexus/sonatype-work/nexus3/etc/nexus.properties 文件,添加如下内容

1
2
# enable db h2
nexus.datastore.enabled=true
  • 启动 nexus,此时我们就完成了 从 3.29.2-02nexus-3.70.4-02 的升级

1
~/nexus3/bin/nexus start

nexus-3.70.4-02 升级到 nexus-3.83.2-01

1
2
3
4
5
6
7
8
9
# 关闭 Nexus 服务
~/nexus3/bin/nexus stop
cd ~
curl -O https://download.sonatype.com/nexus/3/nexus-3.83.2-01-linux-x86_64.tar.gz
tar -zxvf nexus-3.83.2-01-linux-x86_64.tar.gz
rm -f nexus3
ln -s nexus-3.83.2-01 nexus3
# 启动 Nexus,nexus-3.83.2-01 自带 openjdk17,所以不需要单独安装 openjdk
~/nexus3/bin/nexus start