尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Windows搭建Nexus Maven私服:从安装到备份完整指南

发布时间:2026/9/29 19:37:51

资讯中心
01
ARTICLE

Windows搭建Nexus Maven私服:从安装到备份完整指南

Windows搭建Nexus Maven私服:从安装到备份完整指南
简介面向Java开发团队与运维人员的Maven私服搭建包nexus-3.15.2-win64.rar对应Sonatype Nexus官方Windows 64位版本可在局域网内部署以集中管理依赖。它主要解决外网访问不稳、依赖下载慢等痛点选择一台有外网权限的服务器安装Nexus再让开发者将Maven仓库存取地址指向该私服即可统一拉取与缓存中央仓库组件并为内网机器提供稳定代理。对强调构建一致性与依赖可控的中型团队而言这条链路能显著提升交付效率。资源以单个RAR压缩包提供约149.78MB内含nexus-3.15.2运行目录及基础配置因上游未提供文件清单具体文件类型暂不详。已有145人关注学习适合具备基础Maven配置和服务器操作经验的开发、运维人员。借助该包可完整走通Nexus安装、仓库创建、权限设置、依赖代理与访问验证等环节形成一套可复用的私服落地参考同时也能理解Blob存储、仓库组与策略配置等运维要点从而减少公网直连、加速日常构建。1. 拆这份 nexus-3.15.2-win64Windows 上搭 Maven 私服的第一步这次要拆的是这份nexus-3.15.2-win64.rar在 Windows 上搭建 Maven 私服最常用的一套版本。实际场景里团队一旦超过五个人外网拉依赖就会开始卡同一个 jar 每台机器各下载一遍CI 构建还时不时超时。Nexus 3.15.2 正好是 3.x 里口碑比较稳的一个 win64 版本解压即用适合小团队快速把「下载依赖」这件事收敛到内网。本文按我实际搭私服的顺序展开从安装启动到仓库策略、权限、排错和清理备份每一步都给出可以直接抄的参数和命令。2. 安装与首次启动JDK 8、三个目录和一个随机密码2.1 环境准备JDK 8 不能省解压路径不能浪先交代坑。Nexus 3.15.2 是 2019 年的版本官方测试环境就是 JDK 8后面我见过有人拿 JDK 11 甚至 17 去跑启动直接报错或者运行几天后随机崩溃Nexus 的 log 里全是 Nashorn 相关的异常。所以第一件事就是确认java -version是 1.8 版本推荐 1.8.0_191 以上。解压路径有两个硬性要求不能有中文不能有空格。默认解压到D:\tools\nexus这类纯英文路径会比较省心。解压后注意目录名是nexus-3.15.2-01不是nexus-3.15.2位号有-01很多脚本写死了后面的路径结果找不到 exe。解压后主要看三个目录目录作用nexus-3.15.2-01\binnexus.exe、nexus.vmoptions 等启动相关文件nexus-3.15.2-01\etc端口、context-path 等核心配置sonatype-work\nexus3数据目录包括 blob、元数据、日志、admin 密码sonatype-work和nexus-3.15.2-01是同级的它保存所有仓库数据后续备份迁移备份的就是这个目录。bin 目录下核心就一个nexus.exeWindows 上所有操作都通过它完成。2.2 前台启动与首次登录别急着装服务第一次启动我建议用前台方式跑别一上来就注册 Windows 服务。前台跑的好处是启动报错能直接看到出问题方便回滚排查。cd D:\tools\nexus\nexus-3.15.2-01\bin nexus.exe /run/run是前台运行日志直接输出到控制台和sonatype-work\nexus3\log\nexus.log。看到Started Sonatype Nexus OSS表示启动完成。首次启动大概需要 1~2 分钟期间别急着开浏览器。确认正常后停掉再注册服务nexus.exe /install nexus.exe /start注册服务后启动、停止、重启都用nexus.exe /start、nexus.exe /stop、nexus.exe /restart控制也可以在 Windows 服务管理器里操作。访问http://localhost:8081/注意是根路径不是/nexus。3.15.2 默认监听 0.0.0.0:8081局域网同事直接访问你的 IP 就能开管理界面。首次登录有个特点管理员账号是admin但密码不是默认的admin123而是系统启动时自动生成在sonatype-work\nexus3\admin.password文件里的随机字符串。用文本编辑器打开这个文件复制内容登录系统会让你立即改密码并顺带询问是否开启匿名访问。这里我的建议是内网环境先勾上允许匿名访问让开发机零配置就能拉依赖等权限理顺了再关。提示admin.password 这个文件在首次改密后会被自动删除属于正常现象不是异常。端口被占用时修改nexus-3.15.2-01\etc\nexus-default.properties里的application-port比如改成 8082。改完需要重启服务才生效。3. 仓库选型与阿里云代理把慢吞吞的 Central 换掉3.1 仓库类型先搞清Proxy、Hosted、Group 各管一段Nexus 3 的仓库模型是理解后面一切配置的基础。新建仓库时有四种类型但实际用到的就三个Proxy、Hosted、Group。Virtual 是给 2.x 兼容用的新项目基本不碰。类型职责典型用途Proxy代理远程仓库缓存下载过的构件代理 Maven Central、阿里云公共仓库Hosted私服本机存储对外发布存放公司内部 jar、第三方商业 jarGroup把多个仓库聚合成一个访问入口让开发人员只配一个地址关系是开发人员只面对 GroupGroup 下面挂一个 Proxy管外网依赖和两个 Hosted管 release 和 snapshot。构件下载时Group 会按顺序在内部仓库里找找到就返回找不到Proxy 仓库自动去远程拉取并缓存到本地。3.15.2 安装好之后默认已经预置了maven-centralProxy指向 repo1.maven.org、maven-releasesHostedRelease 策略、maven-snapshotsHostedSnapshot 策略和maven-publicGroup聚合了上面三个。这套结构可以直接用唯一的问题是maven-central指向国外在国内网络环境下动不动超时。搭私服的第一步就是把默认的 Central 换成阿里云的公共仓库。3.2 新建 Proxy 仓库用阿里云仓库代替 Central操作路径是登录管理界面左边菜单Repository - Repositories点右上角Create repository选maven2 (proxy)。关键参数参考配置项推荐值说明Namealiyun-central自定义建议能看出用途Remote Storagehttps://maven.aliyun.com/repository/central阿里云 Maven 中央仓库镜像Maximum Component Age-1-1 表示永久缓存已下载构件默认即可Maximum Metadata Age5单位分钟这个参数直接影响 SNAPSHOT 更新延迟后面会细说保存后仓库就建好了。Build 一下验证连通性点仓库行右侧的Browse如果能列出目录树说明代理工作正常。这里有个细节很多人忽略Auto blocking功能默认开启如果连续多次访问远程仓库失败Nexus 会自动把仓库标记为 blocking 状态表现为仓库名旁边有个红色警告所有构件请求直接失败。网络恢复后需要手动点Attempt to reconnect才能解除。接下来把新仓库挂到maven-public这个 Group 下。编辑maven-public在Member repositories里把aliyun-central加进去并把原先的maven-central移除。这样开发机不需要任何改动继续用原来的maven-public地址但实际请求已经全部走阿里云了。3.3 Maven 客户端配置mirror 指向 Group 而不是 Proxy开发人员电脑上要改的是 Maven 的settings.xml。注意 mirror 的 URL 必须指向 Group 仓库不能指向单独的 Proxy 仓库否则你下载的公司内部私有构件会被绕过去。mirrors mirror idnexus-internal/id mirrorOf*/mirrorOf nameNexus Internal Mirror/name urlhttp://192.168.10.20:8081/repository/maven-public//url /mirror /mirrorsmirrorOf*/mirrorOf表示所有仓库请求都走这个私服地址。这个写法在只有一个 Nexus 私服的场景下没问题。如果公司里还保留着别的旧私服需要把它排除比如写成mirrorOf*,!old-repo/mirrorOf避免请求被劫持到新 Nexus 后找不到构件。到这里依赖下载链路已经打通了开发机请求maven-publicGroupNexus 在内部仓库里找找不到就去阿里云拉一次并缓存。验证方法很简单在项目目录执行mvn clean compile第一次构建明显比之前慢第二次开始飞快因为依赖已经在 Nexus 本地缓存了。4. 权限与发布从「能拉」到「能传」的一条龙配置4.1 权限模型匿名访问与最小部署权限默认开启匿名访问后开发机拉依赖是零配置的。但这只解决了「读」的问题往私服上传公司内部构件必须有账号否则任何人都能往maven-releases里传东西仓库就乱了。权限配置路径是Administration - Users / Roles / Privileges。不建议直接给普通开发人员发管理员账号正确做法是创建一个专用部署账号。角色配置的参考思路权限范围需要的权限类型用途maven-releases 仓库browse、read、edit上传 release 版本构件maven-snapshots 仓库browse、read、edit上传 snapshot 版本构件其他仓库browse、read查看和拉取依赖实际操作时在 Roles 里新建一个名为nx-deployer的角色在 Privileges 列表里搜索maven2把对应仓库的browse、read、edit勾上。然后再到 Users 里新建用户密码设一个强密码角色绑定到nx-deployer。这样发布构件的人员就只有上传权限改不了私服配置。匿名访问的调整路径是Administration - Anonymous access。如果关闭匿名所有拉取请求都要带账号密码Maven 的 settings.xml 里要额外配置 server 信息麻烦但安全。内网小团队建议保持开启对外网或半开放网络再考虑关闭。4.2 mvn deploy 发布pom 和 settings.xml 两边都要配开发人员要把自己的 jar 发布到私服需要在项目 pom 里加一段distributionManagementdistributionManagement repository idnexus-releases/id urlhttp://192.168.10.20:8081/repository/maven-releases//url /repository snapshotRepository idnexus-snapshots/id urlhttp://192.168.10.20:8081/repository/maven-snapshots//url /snapshotRepository /distributionManagement注意id不是仓库实际名称而是凭据的引用名。对应的settings.xml里要有同名 serverservers server idnexus-releases/id usernamedeployer/username password你的密码/password /server server idnexus-snapshots/id usernamedeployer/username password你的密码/password /server /servers发布命令就是常规的mvn clean deploy。版本号以-SNAPSHOT结尾的会进maven-snapshots不带后缀的进maven-releases。如果 pom 里配置的仓库 id 和 settings.xml 里的 server id 对不上发布时会报 401这是最常见的翻车点。不想在命令行发布的话Nexus UI 也支持手动上传进入Upload页面选择仓库、填 GAV 坐标然后把 jar 和 pom 一起拖进去。这里提醒一点只传 jar 不传 pom别人引用这个构件时会直接报DependencyResolutionException因为依赖树解析不到。所以要么用 mvn deploy要么 UI 上传时把 pom 一并传。5. 高频故障排查5 个翻车现场与对应解法5.1 服务起不来前台运行秒退现象执行nexus.exe /run窗口一闪就消失了注册成服务后状态一直处于「启动中」然后自动停止。原因大概率是 JDK 版本不对其次是 8081 端口被占用。解决先看日志sonatype-work\nexus3\log\wrapper.log和同目录的nexus.log里面会写明失败原因。如果是 JVM 相关错误卸载当前 JDK安装 JDK 8 并把系统 PATH 指向它也可以用环境变量INSTALL4J_JAVA_HOME直接指定 JDK 8 的安装路径避免影响机器上的其他 Java 程序。端口冲突用netstat -ano | findstr 8081查找到占用进程后改 nexus 的端口更省事。注意改完端口所有仓库 URL 和开发机 mirror 地址都要同步改不然访问的还是旧端口。5.2 maven-central 仓库变红色构件无法下载现象控制台里 maven-central 或 aliyun-central 仓库名旁出现红色警告浏览仓库目录时报 Remote Storage 不可用。原因Nexus 的 Auto blocking 机制起作用了。远程仓库连续几次请求失败后Nexus 会停止对它的请求进入阻塞状态直到手动重连。解决点击仓库行右侧的Attempt to reconnect手动重连。如果反复出现说明远程地址本身不稳定检查 Nexus 服务器到目标仓库的网络连通性或者干脆换一个镜像地址。阿里云仓库偶尔也会慢可以配两个 Proxy 仓库分别指向不同镜像group 里按优先级排列。5.3 SNAPSHOT 依赖一直拉到旧版本现象同事把最新 SNAPSHOT 传上去了你mvn clean install十几次拉到的还是半小时前的版本。原因Nexus 对远端仓库的元数据有缓存机制。Maximum Metadata Age默认是 1440 分钟意味着maven-metadata.xml一天才更新一次SNAPSHOT 的版本信息自然不刷新。解决进入对应 Proxy 仓库的配置把Maven2 - Maximum Metadata Age从 1440 改成 5分钟。这样 Nexus 每 5 分钟重新拉一次远程元数据SNAPSHOT 更新延迟可接受也不会每次都去远端查导致变慢。改完参数保存后建议到 Browse 页面找到maven-metadata.xml删掉强制立即刷新一次。5.4 匿名访问开着但开发机拉依赖报 401现象检查过Anonymous access是开启状态开发机 mirror 配置也没问题但构建时 Private Nexus 返回 401 Unauthorized。原因匿名访问的开关只是入口控制真正决定能否访问的是匿名角色在具体仓库上的权限。常见的操作失误是管理员在调权限时把匿名用户从某些仓库的 browse/read 权限里摘掉了。解决到Administration - Roles里找到anonymous角色编辑权限搜索对应的仓库 id把browse、read勾上。这里的关键是Group 仓库和它内部的 Proxy/Hosted 仓库都要有权限因为 Group 汇总时权限是逐层校验的。5.5 磁盘被 Blob 撑爆删了仓库空间却不释放现象磁盘空间告警检查发现sonatype-work\nexus3\blobs目录几十 GB手动删了仓库里一些构件但目录大小没变化。原因Nexus 3 使用软删除机制。在 UI 里删除构件只是标记删除实际数据还在 blob store 里没被回收而且maven-releases仓库默认禁止重复发布同一版本历史构件会不断堆积。解决在Administration - Cleanup Policies里创建清理策略配置按「最后下载时间超过 30 天」为条件删除代理缓存按「最后更新时间超过 30 天」清理 snapshot 旧版本然后把策略绑定到对应仓库。清理任务可能不会立即触发可以到Tasks里手动执行一次执行完再看磁盘空间是否下降。注意清理是不可逆操作策略可以先绑定到测试仓库观察一轮再铺开。6. 交付前必做Cleanup 策略和备份恢复私服搭完不是结束我一般会再花半小时把两件事做了否则后续运维会很难受。第一是配置 Cleanup 策略。上面 5.5 说的是手动处理正式交付前应该把它做成自动化。入口在Administration - Cleanup Policies - Create cleanup policy。名称建议带仓库名比如cleanup-snapshots-30d。条件用Last blob updated older than配上 30 天格式如30d然后将策略绑定到maven-snapshots。这样 snapshot 构件 30 天没有更新就会被自动回收磁盘不会无限膨胀。Proxy 仓库的缓存可以单独配一条 90 天的策略按最后下载时间清理。第二是备份恢复。这一点在 3.x 上特别容易翻车。Nexus 3 的数据分两大部分blobs构件二进制和db元数据包括仓库配置、权限、构件索引。备份必须把整个sonatype-work\nexus3目录一起处理只拷 blobs 不拷 db恢复后仓库列表是空的构件全都 404。常见做法是停服冷备nexus.exe /stop后在磁盘较空闲的时段把sonatype-work\nexus3整体压缩拷贝这个方案最稳妥恢复时版本严格一致3.15.2 的备份恢复到 3.15.x 没问题跨大版本恢复大概率起不来。用命令备份的话我会写一个简单的脚本核心就两步nexus.exe /stop tar -czf nexus-data-backup.tar.gz -C /d/tools/nexus sonatype-work/nexus3 nexus.exe /start参数说明/stop先停服是因为 orientdb 在运行状态下的文件一致性无法保证在线拷贝出来的备份恢复时经常会报数据库损坏这是 3.x 的一个老大难。tar -czf是 Windows 10 自带压缩命令也可以直接用压缩软件右键压缩。备份频率建议每周一次全量日常增量意义不大数据量通常不会大到需要天天备份。从那以后我每次交付私服都会强制走一遍「建 Cleanup 策略 停服全量备份」这个流程哪怕只是临时环境。后来有一次同事误操作把整个maven-releases仓库清了就是靠这份备份半个小时内恢复的从此再没怀疑过备份脚本的价值。希望这篇文章能帮你在 Nexus 3.15.2 上少走几段弯路把时间花在真正有价值的事情上。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。