Nexus 3.78.0-1 centos7安装及 数据从旧的nexus仓库迁移
mvn jdknexus 安装,数据迁移
安装包文件下载
https://help.sonatype.com/en/download.html
下载对应的版本
解压到要安装目录
unzip nexus-unix-x86-64-3.78.0-14.tar.gz -d nexus3
配置|启动
可以修改 jvm的参数:
vim nexus3/bin/nexus.vmoptions
-Xms2703m
-Xmx2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Dkaraf.home=.
-Dkaraf.base=.
-Djava.util.logging.config.file=etc/spring/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Djdk.tls.ephemeralDHKeySize=2048
启动|停止:
nexus3/bin/nexus start | stop
日志目录:
nexus3同级:
sonatype-work/nexus3/log/nexus.log
添加自己登录的账号
启动后,nexus会在目录下自动生成admin的密码文件,登录后会提示重置密码;
cat sonatype-work/nexus3/admin.password
如果之前有自己的账号,则需要自己手动创建
nexus 仓库
在 Nexus 中,常见的三种仓库类型分别是 proxy、hosted 和 group。它们各自有不同的用途和功能:
-
Proxy 仓库:
- 代理仓库用于缓存远程仓库的内容。当你从远程仓库下载依赖时,代理仓库会缓存这些文件,这样在以后使用时可以直接从代理仓库获取,减少了每次请求远程仓库的延迟。
- 适用于需要从外部仓库(如 Maven Central、JCenter 等)获取依赖并缓存的场景。它实际上并不存储任何本地上传的组件。
- 用途:提高外部仓库的访问速度,并减轻网络流量的压力。
-
Hosted 仓库:
- 托管仓库用于存储本地构建的 artifacts(如 JAR 文件、WAR 文件等),也可以用于发布自己的组件。
- 你可以将自己的构建产物上传到托管仓库,并通过 Maven 或其他工具进行发布、共享。
- 用途:存储内部使用的构建产物或自己发布的依赖。
-
Group 仓库:
- 组合仓库将多个仓库合并成一个仓库进行访问。通过 group 仓库,用户可以访问多个仓库的内容,而不需要单独配置每个仓库。
- 适用于集中访问多个 proxy 或 hosted 仓库的场景。通过 group 仓库,可以简化依赖的配置,只需配置一个仓库地址。
- 用途:将多个仓库(如 proxy 和 hosted)组合起来,提供一个统一的访问入口。
总结来说:
- Proxy 用于缓存远程仓库的内容。
- Hosted 用于存储和管理本地构建的组件。
- Group 用于将多个仓库合并成一个入口,简化访问。
增加 aliyun 的proxy代理同时加入 public的group中;
http://maven.aliyun.com/nexus/content/groups/public
迁移场景
如果本机使用脚本直接将 本地的local_repository 下的jar和pom直接迁移到新的 nexus上
#!/bin/bash
# 配置项
LOCAL_REPO="/usr/data/maven/local_repository"
NEXUS_HOST="http://localhost:8081"
NEXUS_USER="admin"
NEXUS_PASS="admin"
RELEASE_REPO="maven-releases"
SNAPSHOT_REPO="maven-snapshots"
# 遍历所有 JAR 和 POM 目录
find "$LOCAL_REPO" -type d | while read -r dir_name; do
jar_file=$(find "$dir_name" -maxdepth 1 -type f -name "*.jar" ! -name "*-sources.jar" ! -name "*-javadoc.jar" | head -n 1)
pom_file=$(find "$dir_name" -maxdepth 1 -type f -name "*.pom" | head -n 1)
# 过滤掉无关目录
if [[ -z "$jar_file" ]]; then
continue
fi
# 解析 groupId, artifactId, version
group_path=${dir_name#"$LOCAL_REPO/"}
version=$(basename "$dir_name") # 版本号
artifact_id=$(basename "$(dirname "$dir_name")") # artifactId
group_id=$(dirname "$(dirname "$group_path")") # groupId 目录路径
group_id=${group_id//\//.} # 转换为 Maven 格式
echo "📌 解析结果: groupId=$group_id, artifactId=$artifact_id, version=$version"
# 确定上传仓库
if [[ "$version" == *"-SNAPSHOT" ]]; then
repo="$SNAPSHOT_REPO"
else
repo="$RELEASE_REPO"
fi
jar_base_name="${jar_file%.jar}"
# 上传方式
#if [[ -n "$pom_file" ]]; then
if [[ -n "$pom_file" && "$pom_file" == *"$jar_base_name"* ]]; then
# **使用标准上传**
upload_path="${group_id//.//}/$artifact_id/$version"
jar_url="$NEXUS_HOST/repository/$repo/$upload_path/$artifact_id-$version.jar"
pom_url="$NEXUS_HOST/repository/$repo/$upload_path/$artifact_id-$version.pom"
echo "使用标准上传 🚀 上传 JAR: $jar_file"
curl -u "$NEXUS_USER:$NEXUS_PASS" --upload-file "$jar_file" "$jar_url" --verbose
echo "使用标准上传 📄 上传 POM: $pom_file"
curl -u "$NEXUS_USER:$NEXUS_PASS" --upload-file "$pom_file" "$pom_url" --verbose
else
# **使用 Nexus UI API 上传并生成 POM**
echo "📄 无 POM 文件,使用 Nexus API 自动生成 POM"
echo "---上传参数: groupId=$group_id, artifactId=$artifact_id, version=$version"
curl -u "$NEXUS_USER:$NEXUS_PASS" -X POST "$NEXUS_HOST/service/rest/internal/ui/upload/$repo" \
-H "Accept: application/json, text/plain, */*" \
-H "Content-Type: multipart/form-data" \
-F "asset0=@$jar_file" \
-F "asset0.extension=jar" \
-F "groupId=$group_id" \
-F "artifactId=$artifact_id" \
-F "version=$version" \
-F "generate-pom=true" \
--insecure --verbose
fi
echo "✅ 上传完成: $artifact_id-$version"
echo "--------------------------------------"
done
其他方式:
参考GPT的回复
方案概述
- 备份 Nexus 关键数据
- 清理 Nexus 并重新安装
- 恢复数据
- 优化 Nexus 内存占用
步骤 1:备份现有 Nexus 数据
1.1 备份 Nexus 存储库数据
存储库的数据位于 nexus-data/blobs
目录,建议先进行压缩:
tar -czvf nexus-blobs-backup.tar.gz /opt/nexus-data/blobs
1.2 备份 Nexus 配置
备份 etc
目录,其中包含 Nexus 的用户、角色和存储库设置:
tar -czvf nexus-config-backup.tar.gz /opt/nexus/etc
1.3 备份数据库
如果 Nexus 使用 OrientDB 作为数据库,需要备份 nexus-data/db
:
tar -czvf nexus-db-backup.tar.gz /opt/nexus-data/db
步骤 2:清理 Nexus 并重新安装
2.1 停止 Nexus 服务
systemctl stop nexus
或者:
/opt/nexus/bin/nexus stop
2.2 删除 Nexus 并清理缓存
rm -rf /opt/nexus
rm -rf /opt/nexus-data
注意:如果你已经备份
blobs
,请确保备份后再删除。
2.3 重新下载 Nexus
前往 Sonatype 官网 下载最新的 Nexus 3 版本,或使用 wget
:
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
tar -xzvf latest-unix.tar.gz -C /opt/
mv /opt/nexus-3.* /opt/nexus
步骤 3:恢复数据
3.1 恢复存储库数据
tar -xzvf nexus-blobs-backup.tar.gz -C /opt/nexus-data
3.2 恢复配置
tar -xzvf nexus-config-backup.tar.gz -C /opt/nexus/etc
3.3 恢复数据库
tar -xzvf nexus-db-backup.tar.gz -C /opt/nexus-data/db
步骤 4:优化 Nexus 内存占用
4.1 调整 JVM 内存
编辑 /opt/nexus/bin/nexus.vmoptions
,调整 -Xms
和 -Xmx
:
# 默认可能是 2G 或更高,你可以调整为 512M~1G 之间
-Xms512m
-Xmx1024m
4.2 启用垃圾回收优化
可以在 nexus.vmoptions
里添加:
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
4.3 限制 Blob 存储缓存
编辑 nexus.properties
(如果有):
nexus.blobstore.directbuffersize=64M
全文完

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)