Windows 下 Nexus 3.45.0 搭建 Maven 私服实战指南

发布时间:2026/10/21 6:37:41
Windows 下 Nexus 3.45.0 搭建 Maven 私服实战指南 简介nexus-3.45.0-01-win64 是 Sonatype 官方推出的开源仓库管理器 Nexus 在 Windows 64 位平台上的完整安装包面向 Java 开发者、DevOps 工程师及需要搭建 Maven 私服的团队。它可作为内部受控仓库集中存储、代理与分发构建工件规避直连中央仓库带来的网络延迟与安全隐患适合企业级依赖治理与内网离线开发场景。压缩包共 690 个文件约 240.62MB以 420 个 jar 核心库、82 个 dll 动态链接库、22 个 exe 可执行程序为主辅以 xml、properties、cfg 等配置文件和少量 png、gif 界面资源结构完整可直接部署。已有 417 人学习下载。解压后包含 nexus-3.45.0-01 程序目录与 sonatype-work 数据目录前者承载 Web 应用、脚本与启动器后者保存配置、日志及仓库内容便于理解运行机制并完成日常维护与优化。1. 从一台 Windows 构建机说起nexus-3.45.0-01-win64 到底装给谁用上周帮一个小组调构建环境他们的 Windows 构建机每次拉 Maven 依赖都要走外网一个mvn clean package卡在下载环节能等十几分钟偶尔某个依赖源抽风整条流水线直接红掉。问题不在代码在于没有本地仓库代理。这种场景下最省事的做法就是在内网起一个 Maven 私服把中央仓库的依赖缓存到本地后续所有构建都从私服取。Nexus Repository Manager 3 就是干这个的而nexus-3.45.0-01-win64是它在 Windows 上的 64 位发行包解压即用不需要额外装数据库。这篇记录的是我在 Windows 环境里从零把 Nexus 3.45.0 跑起来、配好 Maven 私服、再验证构建能走通的完整过程。适合手上有 Windows 构建机、想搭内网 Maven 仓库但还没动手的开发者也适合装过一次但被端口、内存、服务注册折腾过的熟手对照排查。2. 装前把环境对齐JDK、端口、目录一次说清2.1 版本选择与 JDK 依赖nexus-3.45.0-01-win64这个包名里3.45.0-01是 Nexus 的版本号win64表示它是 Windows 64 位专用发行包内部已经带了 Jetty 容器和启动脚本不需要你单独装 Tomcat。但有一点必须提前确认Nexus 3.x 系列运行依赖 JDK3.45.0 这个版本我一般配 JDK 8 或 JDK 11实测两者都能跑起来。如果你机器上只有 JDK 17启动脚本可能会因为模块化访问限制报错常见做法是单独装一个 JDK 8 或 11 放在固定目录启动时通过环境变量指过去而不是改系统默认 JDK。检查当前 JDK 版本java -version输出里如果看到1.8.0_xxx或11.0.x基本可以直接用。如果是17或更高建议先装一个 JDK 11 备用。Nexus 启动脚本会读JAVA_HOME所以最稳妥的方式是给 Nexus 单独指定而不是动全局。2.2 端口与目录规划Nexus 3.45.0 默认监听两个端口8081给 Web 控制台和仓库服务8082给 Docker 相关功能如果不用可以不管。装之前先确认 8081 没被占用netstat -ano | findstr :8081如果输出为空说明端口空闲。有输出的话记下 PID去任务管理器确认是什么进程能换就换不能换就在 Nexus 配置里改端口。目录方面我习惯把 Nexus 放在一个独立盘符下比如D:\nexus避免放在C:\Program Files下面因为那个路径有空格和权限限制启动脚本处理起来容易出玄学问题。解压后的目录结构大致是目录/文件作用bin启动脚本含nexus.exe和nexus.vmoptionsetc配置文件nexus-default.properties在这里data运行时数据仓库内容、索引、配置都存这里lib依赖 jar 包tmp临时目录data目录是后面备份和迁移的核心装之前心里要有数。2.3 解压与首次启动把nexus-3.45.0-01-win64压缩包解压到D:\nexus注意解压后可能多一层目录确认bin目录直接在D:\nexus下面。然后以管理员身份打开命令行进入bin目录cd /d D:\nexus\bin nexus.exe /run/run参数表示前台运行日志直接打在控制台方便第一次看启动过程。启动成功会看到类似Started Sonatype Nexus的日志。第一次启动会初始化data目录耗时可能一两分钟别急着 CtrlC。提示第一次启动如果卡在Initializing很久多半是磁盘写入慢或者杀毒软件在扫描等几分钟再看。启动完成后浏览器访问http://localhost:8081能看到 Nexus 界面就说明服务起来了。初始管理员密码在D:\nexus\sonatype-work\nexus3\admin.password文件里登录后第一件事就是改密码这个后面细说。3. 把 Nexus 注册成 Windows 服务别每次手动开命令行3.1 为什么不用/run长期跑nexus.exe /run适合调试但窗口一关服务就停构建机重启后还得手动开不现实。生产或长期使用的做法是注册成 Windows 服务开机自启后台运行。Nexus 自带nexus.exe支持/install和/start参数不需要额外装 NSSM 之类的工具。3.2 安装服务并指定 JDK在bin目录下执行nexus.exe /install nexusnexus是服务名可以自定义。安装完成后如果机器上有多个 JDK需要告诉服务用哪个。编辑bin\nexus.vmoptions文件在开头加上-Djava.homeD:\jdk11把路径换成你实际 JDK 的目录。这一步很关键服务启动时不会读你当前命令行的JAVA_HOME只认这个配置。然后启动服务nexus.exe /start检查服务状态nexus.exe /status看到Running就对了。如果启动失败去D:\nexus\sonatype-work\nexus3\log\nexus.log看日志最常见的报错是 JDK 路径不对或者端口被占。3.3 内存参数调整nexus.vmoptions里还有几个内存参数默认值在构建机这种场景下偏小依赖一多容易 OOM。我一般会改成-Xms1024m -Xmx2048m -XX:MaxDirectMemorySize2048m-Xms是初始堆-Xmx是最大堆MaxDirectMemorySize影响文件传输和缓存。改完保存重启服务生效nexus.exe /stop nexus.exe /start注意改vmoptions后必须重启服务/run模式下改这个文件不生效因为前台运行读的是另一套参数。3.4 服务卸载与重装如果服务装坏了比如路径写错、JDK 找不到先卸载再重装nexus.exe /stop nexus.exe /uninstall然后重新/install。卸载不会删data目录仓库数据还在这点可以放心。但如果你改了data目录位置需要在etc\nexus-default.properties里改nexus-data的路径这个文件里有一行nexus-data${user.dir}/../sonatype-work/nexus3按需调整。4. 配 Maven 私服仓库、代理、权限三件事4.1 登录与改密码浏览器打开http://localhost:8081点右上角 Sign in用户名admin密码从admin.password文件里复制。登录后会强制让你改密码新密码建议用字母加数字组合别用特殊符号因为后面 Maven 的settings.xml里写密码时特殊符号要转义容易踩坑。改完密码后admin.password文件会自动删除如果没删可以手动删掉留着是个安全隐患。4.2 创建代理仓库Nexus 默认已经建好了几个仓库其中maven-central是代理中央仓库的但默认可能没启用。进入Settings→Repositories找到maven-central确认Online状态是勾选的。如果没勾勾上保存。如果公司内网有自建的中央仓库镜像可以新建一个代理仓库Create repository→ 选maven2 (proxy)填名称比如maven-aliyunRemote storage填镜像地址其他默认保存。4.3 创建宿主仓库和仓库组宿主仓库用来放公司内部自己打的包。Create repository→maven2 (hosted)名称比如maven-releasesVersion policy选ReleaseDeployment policy选Allow redeploy方便覆盖测试包。再建一个maven-snapshotsVersion policy选Snapshot。仓库组是把多个仓库聚合成一个入口Maven 只需要配一个地址就能同时拉代理仓库和宿主仓库。Create repository→maven2 (group)名称比如maven-public把maven-central、maven-releases、maven-snapshots都加到Member repositories里顺序上代理仓库放前面宿主仓库放后面。4.4 Maven settings.xml 配置在开发机的~/.m2/settings.xml里加mirrors mirror idnexus-maven/id mirrorOf*/mirrorOf urlhttp://192.168.1.100:8081/repository/maven-public//url /mirror /mirrorsmirrorOf写*表示所有仓库请求都走 Nexusurl里的 IP 换成 Nexus 所在机器的实际 IP端口默认 8081路径/repository/maven-public/对应你建的仓库组名称。如果内部仓库需要认证在settings.xml的servers里加server idnexus-maven/id usernamedeploy/username password你的密码/password /serverid要和mirror里的id一致否则认证不生效。4.5 项目 pom.xml 发布配置内部项目要发布到 Nexus在pom.xml里加distributionManagement repository idnexus-maven/id urlhttp://192.168.1.100:8081/repository/maven-releases//url /repository snapshotRepository idnexus-maven/id urlhttp://192.168.1.100:8081/repository/maven-snapshots//url /snapshotRepository /distributionManagementid同样对应settings.xml里的 server 配置。执行mvn deploy时release 版本走maven-releasessnapshot 版本走maven-snapshots。5. 避坑与排查装 Nexus 3.45.0 最容易翻车的五件事5.1 启动报错Unsupported major.minor version现象nexus.exe /run或服务启动后立刻退出日志里出现Unsupported major.minor version 52.0或类似版本号。原因Nexus 3.45.0 编译时用的 JDK 版本和你当前运行的不匹配。52.0 对应 JDK 8如果日志里出现更高的版本号说明 Nexus 需要更高 JDK但你装的是低版本。解决确认nexus.vmoptions里的-Djava.home指向的 JDK 版本。3.45.0 我实测 JDK 8 和 11 都行如果指向 JDK 17 可能报模块化错误换回 11 即可。5.2 8081 端口被占用现象启动日志显示Address already in use服务起不来。原因机器上已经有其他进程占了 8081常见的是之前装过 Nexus 没卸干净或者某个监控代理用了这个端口。解决netstat -ano | findstr :8081找到 PID任务管理器确认进程。如果是残留 Nexusnexus.exe /uninstall后重装如果是其他进程改 Nexus 端口编辑etc\nexus-default.properties把application-port8081改成其他值重启服务。5.3 服务启动后浏览器打不开现象nexus.exe /status显示 Running但浏览器访问http://localhost:8081一直转圈或拒绝连接。原因Nexus 启动后初始化data目录需要时间尤其是第一次启动可能一两分钟内 Web 服务还没就绪。另外如果机器开了防火墙8081 可能被拦。解决先等两分钟再刷新。还不行就看nexus.log如果日志停在Initializing不动检查data目录所在磁盘空间是否充足。防火墙方面在 Windows 防火墙里给 8081 端口加一条入站规则。5.4 Maven 拉依赖报 401 或 403现象mvn clean package时提示401 Unauthorized或403 Forbidden依赖下载失败。原因settings.xml里配了 server 认证但id和mirror的id不一致或者密码里含特殊字符没转义。解决检查settings.xml里server的id是否和mirror的id完全一致。密码如果含、、等字符用 XML 实体转义比如写成amp;。最省事的做法是改密码时只用字母和数字。5.5 磁盘写满导致 Nexus 崩溃现象Nexus 运行一段时间后突然无法访问日志报No space left on device。原因data目录里缓存了大量依赖尤其是代理仓库的blobs目录增长很快。解决定期清理不需要的缓存。Nexus 有清理任务Settings→Tasks→Create task→ 选Admin - Cleanup repositories to remove snapshots或Maven - Delete unused snapshots按需配置。另外把data目录放在大容量盘上别放系统盘。6. 装完怎么验证从空仓库到构建跑通6.1 验证 Nexus 服务本身服务注册好之后先确认开机自启没问题。重启机器不手动执行任何命令等几分钟后直接访问http://localhost:8081能打开登录页就说明服务自启正常。这一步很多人跳过结果机器一重启服务没起来构建全挂。再看一眼日志有没有异常type D:\nexus\sonatype-work\nexus3\log\nexus.log | findstr ERROR没有 ERROR 输出就基本干净。6.2 验证 Maven 私服拉取找一台开发机settings.xml按第 4 章配好然后执行mvn dependency:get -Dartifactorg.apache.commons:commons-lang3:3.12.0这条命令会从 Nexus 拉取commons-lang3的 3.12.0 版本。第一次执行时Nexus 会去中央仓库代理下载然后缓存到本地。执行成功后去 Nexus 控制台的Browse→maven-central里搜commons-lang3能看到缓存记录说明代理仓库工作正常。再执行一次同样的命令这次应该秒下因为已经走本地缓存了。如果第二次还是慢检查settings.xml的mirrorOf是不是写成了central而不是*写central只代理中央仓库其他仓库请求还是走外网。6.3 验证内部包发布与拉取在内部项目里执行mvn deploy把包发布到maven-releases。发布成功后在 Nexus 控制台Browse→maven-releases里能看到刚发布的包。然后新建一个空项目在pom.xml里依赖这个内部包执行mvn compile如果能从 Nexus 拉到说明宿主仓库和仓库组都配对了。这一步有个常见坑maven-public仓库组的Member repositories顺序如果不对Maven 可能先找到代理仓库里的旧版本而不是你刚发布的内部版本。我一般把宿主仓库放在代理仓库前面确保内部包优先。6.4 一个我每次都会走的检查习惯装完 Nexus 后我会做一次「断网构建」测试把开发机的外网断掉只留内网然后执行mvn clean package。如果构建能成功说明所有依赖都走了 Nexus 私服没有偷偷走外网。这个测试能暴露很多配置遗漏比如某个仓库没加到 group 里或者mirrorOf没覆盖全。从那以后我每次装完 Nexus 都强制走一遍断网构建确认私服真正接管了依赖拉取而不是看起来配好了、实际还在走外网。希望这套流程能帮到你少踩几个我踩过的坑。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询