核心是通过代理缓存、本地托管和统一组仓库三步实现:创建maven-proxy或npm-proxy代理远程源,配置npm-hosted或maven-releases/snapshots托管私有构件,再用maven-public或npm-group提供统一访问入口,客户端指向该组即可加速构建、规避外网依赖。

在Linux上用Nexus Repository构建私有Maven或NPM镜像仓库,核心是通过代理缓存+本地托管+统一入口三步实现构建加速。不需要改项目代码,只需合理配置仓库类型和客户端指向,就能显著减少重复下载、规避外网依赖、提升CI/CD稳定性。
Maven私有镜像仓库搭建要点
重点不是“从零建库”,而是复用Nexus默认结构并补充关键代理:
- 确认Nexus已启动且端口(默认8081)可访问,JDK 8+ 已就绪
- 登录后进入 Repositories → Create repository,优先新建一个 maven-proxy 类型仓库,Remote storage URL 填
https://maven.aliyun.com/repository/public(推荐阿里云镜像,比中央仓更快更稳) - 检查默认的 maven-public 组仓库,确保它已包含
maven-releases、maven-snapshots和你刚建的maven-proxy—— 这个组就是开发和CI实际使用的统一URL - 在Maven的
settings.xml中配置镜像,把所有请求重定向到该组:
NPM私有镜像仓库搭建要点
NPM不像Maven有全局镜像机制,必须靠组仓库+客户端配置双驱动:
- 创建三个基础仓库:npm-proxy(远程代理,URL设为
https://registry.npm.taobao.org)、npm-hosted(内部包上传用,Deployment policy 建议选“Disable redeploy”防覆盖)、npm-group(把前两者加入,对外暴露单一地址) - 给 npm-hosted 仓库分配写权限:进入 Security → Roles,编辑对应角色,勾选
nx-repository-view-npm-npm-hosted-*下的nx-component-upload - 项目级生效:在项目根目录加
.npmrc,内容为:
_auth=base64编码后的 admin:密码
always-auth=true
若需全局发布权限,还需在用户主目录 ~/.npmrc 中配置 email 字段(任意邮箱即可)。
加速效果的关键细节
缓存不是自动生效的,得触发首次拉取才能落地:
- Maven首次构建时,会把远程依赖下载到Nexus服务器的
/nexus-data/blobs/下,后续相同坐标请求直接走本地文件系统,不发HTTP请求 - NPM首次
npm install后,对应tgz包即被缓存;后续同版本安装毫秒级响应 - 注意清理策略:在 Blob Stores 中为每个blob store设置Soft limit(如50GB),避免磁盘占满;Nexus会自动淘汰最久未访问的资产
- 禁止用root启动Nexus(启动日志会警告),建议创建专用用户如
nexus并赋予权限
验证与日常维护
不靠猜,靠看:
- 浏览器访问
http://ip:8081/repository/maven-public/或/repository/npm-group/,能列出索引页即说明服务通 - 执行一次
mvn clean compile或npm install,再进Nexus界面的 Components 标签页,应看到新入库的构件 - 定期检查
/nexus-data/log/nexus.log,关注WARN/ERROR行,尤其涉及存储空间、权限拒绝、连接超时类日志 - 升级Nexus前,先备份整个
/nexus-data目录(含blob、db、etc),这是全部状态所在











