简介:nexus-3.45.0-01-win64 是 Sonatype 官方推出的开源仓库管理器 Nexus 的 Windows 64 位安装包,面向 Java 开发者、运维人员及需要搭建 Maven 私服的团队。它可作为内部受控仓库,集中存储、代理与分发构建工件,解决直连中央仓库带来的网络延迟与安全隐患,适合企业级依赖治理与内网构建加速场景。压缩包共 690 个文件,约 240.62MB,以 420 个 jar 核心库、82 个 dll 本地库、22 个 exe 可执行程序为主,辅以 xml、properties、cfg 等配置文件和少量 png、gif 界面资源,完整覆盖运行所需组件。解压后包含 nexus-3.45.0-01 程序目录与 sonatype-work 数据目录,前者存放 Web 应用、脚本与启动器,后者承载配置、日志与仓库内容,便于理解 Nexus 的目录结构与维护方式。目前已有 417 人学习下载,适合希望快速在 Windows 环境落地 Maven 私服、掌握仓库代理与权限控制的开发者参考使用。
1. 从一台 Windows 构建机说起:nexus-3.45.0-01-win64 到底装的是什么
上周帮一个小组收拾一台 Windows 构建机,现象很典型:本地mvn clean package能过,CI 上同一份代码却卡在拉依赖,日志里全是Could not transfer artifact。他们以为是网络抖动,折腾半天,最后发现是本地仓库和私服地址混着用,谁也没说清到底该连哪个。这类问题在多人协作里几乎躲不掉,而 Nexus 就是用来把这件事收口的——它把 Maven 依赖、npm 包、Docker 镜像这些制品集中托管,谁要什么从私服拿,不再各拉各的。
这篇记录的是nexus-3.45.0-01-win64这套 Windows 版本的安装落地过程。选它的人多半是团队里负责搭 Maven 私服的那位,机器是 Windows Server 或一台常开的 Windows 工作站。装不好会怎样?轻则依赖拉不下来,重则私服端口裸奔、默认密码没改,成了内网里的一个隐患。下面按「装什么 → 怎么装 → 坏了怎么救」走一遍,新手能照着跑通,熟手可以重点看版本和参数取舍。
2. 装前把环境列清:JDK、端口和目录这三件事先定死
2.1 版本与运行环境对照
Nexus 3.x 是 Java 应用,nexus-3.45.0-01这个包自带 Jetty 和运行脚本,不需要你单独装 Tomcat。但 JDK 必须提前备好,而且版本要对得上。我一般会先确认机器上有没有 JDK,再决定是复用还是单独放一份。
| 项目 | 建议值 | 说明 |
|---|---|---|
| Nexus 版本 | 3.45.0-01 | 对应 win64 压缩包 |
| JDK | 8 或 11 | 3.45 对 JDK 8 兼容良好,11 也可跑 |
| 默认 HTTP 端口 | 8081 | 装完第一件事就是确认它没被占 |
| 默认管理端口 | 8081 同端口 | 3.x 不再单独开 8081 管理口 |
| 数据目录 | 安装目录下../sonatype-work | 升级迁移时真正要备份的是它 |
| 运行账户 | 专用低权限账户 | 别用 Administrator 长期跑 |
这里有个反直觉的点:很多人以为 Nexus 装完就自带 JDK,其实 Windows 包只带启动脚本,java得在 PATH 里能找到。我习惯先跑一句确认:
java -version输出里能看到1.8.0_xxx或11.0.x就说明基础环境在。如果提示'java' 不是内部或外部命令,别急着装 Nexus,先把 JDK 装好并把JAVA_HOME指过去。JAVA_HOME指向 JDK 根目录,不是bin,这是新手最常写错的一处。
2.2 端口和目录的取舍
8081 是 Nexus 的默认端口,但内网里 8081 经常被别的服务占着。装之前先看一眼:
netstat -ano | findstr :8081有输出说明被占用,要么换端口,要么把占用进程处理掉。换端口在etc/nexus-default.properties里改application-port,改完重启生效。目录方面,解压出来的nexus-3.45.0-01是程序目录,真正的数据在它同级的sonatype-work里。我一般会把这两个目录放在同一块盘上,别一个在 C 盘一个在 D 盘,迁移时容易漏。
提示:Windows 上路径别带中文和空格,
C:\nexus\nexus-3.45.0-01这种最省心,脚本里拼路径不会出玄学问题。
3. 下载与解压:nexus-3.45.0-01-win64 的落地步骤
3.1 拿到包之后先校验再解压
nexus-3.45.0-01-win64是一个 zip 压缩包,解压后得到nexus-3.45.0-01目录。拿到包先别急着双击,确认文件完整再动手。常见做法是对一下哈希,或者至少确认压缩包能正常打开、没有报损坏。
解压位置建议固定,比如C:\nexus\,解压完结构大致是这样:
C:\nexus\ ├── nexus-3.45.0-01\ # 程序目录 │ ├── bin\ │ ├── etc\ │ └── ... └── sonatype-work\ # 首次启动后生成,存数据bin目录下有nexus.exe和nexus.bat,前者用于注册 Windows 服务,后者用于前台启动调试。etc目录里是配置文件,nexus-default.properties管端口和上下文路径,nexus.vmoptions管 JVM 内存参数。
3.2 前台启动先跑通,再考虑注册服务
第一次装我强烈建议前台启动,能直接看到日志,出问题好定位。进到bin目录执行:
cd C:\nexus\nexus-3.45.0-01\bin nexus.exe /run/run是前台运行,日志直接打在控制台。看到类似Started Sonatype Nexus的字样,说明起来了。这时候别关窗口,另开一个终端访问http://localhost:8081,能看到界面就成功了一半。
如果直接注册服务:
nexus.exe /install nexus nexus.exe /start nexus/install后面跟的是服务名,可以自定义。服务方式适合长期运行,但调试阶段日志要去sonatype-work/nexus3/log/nexus.log里翻,不如前台直观。我一般前台确认没问题,再停掉注册成服务。
3.3 内存参数别用默认值硬扛
nexus.vmoptions里默认的堆内存对小型私服够用,但如果团队依赖量大、并发拉取多,默认值容易触发 Full GC。常见做法是把初始堆和最大堆设成一样,避免动态扩缩带来的抖动:
-Xms2g -Xmx2g -XX:MaxDirectMemorySize=2g改完保存,重启生效。这里-Xms和-Xmx设成相同值是运维里的常规操作,减少堆调整开销。机器内存小于 4G 的话别硬上 2g,按实际来,堆设太大反而会拖慢启动。
4. 初始化配置:改密码、配仓库、接 Maven
4.1 首次登录与管理员密码
Nexus 3.x 首次启动会生成一个随机管理员密码,放在:
sonatype-work\nexus3\admin.password用文本编辑器打开,复制那串密码,浏览器登录http://localhost:8081,用户名admin,粘贴密码。登录后会强制要求改密码,这一步别跳过,也别改成admin123这种。改完密码后,那个admin.password文件就可以删掉了,留着是隐患。
注意:如果登录时提示密码错误,先确认是不是复制时带了空格,或者文件被别的进程占用读到了旧内容。重启一次再读通常能解决。
4.2 仓库类型怎么选
Nexus 里的仓库分三类,理解这三类,后面配 Maven 就不会乱:
- proxy(代理仓库):代理中央仓库,本地没有的依赖它去远端拉,拉回来缓存。
maven-central就是默认的代理仓库。 - hosted(宿主仓库):存自己团队发布的构件,比如内部二方包。
maven-releases和maven-snapshots是默认的两个。 - group(仓库组):把上面几类聚合成一个地址对外,客户端只连这一个地址就行。默认的
maven-public就是组。
我一般让开发只连maven-public,它内部按顺序找 hosted 再找 proxy,省得每个人记一堆地址。
4.3 在 Maven 里接上私服
服务端配好后,客户端要改settings.xml。找到conf/settings.xml,在<mirrors>里加一段:
<mirror> <id>nexus</id> <name>internal nexus</name> <url>http://192.168.1.10:8081/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror>mirrorOf写*表示所有仓库请求都走这个私服,包括中央仓库。url里的maven-public就是前面说的仓库组,末尾的斜杠别丢。如果只想代理中央仓库、保留其他仓库直连,可以把mirrorOf改成central。
发布构件还需要在<servers>里配认证:
<server> <id>nexus-releases</id> <username>deploy</username> <password>你的密码</password> </server>这里的id要和项目pom.xml里distributionManagement的id对上,对不上会报 401。我见过有人id写成nexus,pom里写releases,排查半天以为是权限问题。
5. 避坑与排查:装 Nexus 时最容易翻车的几处
5.1 启动报端口被占
现象:nexus.exe /run起来后立刻退出,日志里Address already in use。
原因:8081 被别的进程占了,或者上一次 Nexus 没退干净还占着端口。
解决:netstat -ano | findstr :8081找到 PID,任务管理器里结束对应进程;或者改nexus-default.properties里的application-port换一个端口。
5.2 服务方式启动后访问不了
现象:nexus.exe /start nexus显示启动成功,但浏览器打不开。
原因:服务账户权限不够,或者sonatype-work目录没写权限,数据没初始化成功。
解决:看sonatype-work/nexus3/log/nexus.log,如果报权限相关错误,把服务运行账户改成有写权限的账户,或者给sonatype-work目录授权。别用 SYSTEM 账户跑,出问题不好查。
5.3 依赖能拉但发布报 401
现象:拉取正常,mvn deploy报401 Unauthorized。
原因:settings.xml里<server>的id和pom.xml里distributionManagement的id不一致,或者密码错了。
解决:两边id对齐,密码重新确认。改完记得清一下本地~/.m2/settings-security.xml的缓存(如果用了加密密码)。
5.4 磁盘涨得比预期快
现象:跑一段时间后sonatype-work目录越来越大。
原因:代理仓库缓存了大量依赖,快照版本反复发布也占空间。
解决:给 proxy 仓库配清理策略,定期清理未使用的缓存;快照仓库设置保留个数。这个在仓库设置的Cleanup Policies里配,别等磁盘满了才想起来。
5.5 升级时数据丢了
现象:换了新版本 Nexus,启动后仓库配置全没了。
原因:只备份了程序目录,没备份sonatype-work。
解决:升级前把sonatype-work整个目录备份,新版本程序目录换掉,数据目录指向原来的。Nexus 的数据和程序是分离的,记住这一点能省很多后悔药。
6. 装完怎么验证:三步确认私服真的在干活
装完不等于跑通,得验证它确实在服务。我一般走三步,缺一步都不放心。
第一步,确认服务在监听。在服务器本机执行:
netstat -ano | findstr :8081有LISTENING状态就说明端口在。再从另一台机器访问http://服务器IP:8081,能打开界面说明网络通。这一步排除的是防火墙和绑定地址问题——Nexus 默认绑0.0.0.0,但 Windows 防火墙可能拦着。
第二步,确认代理仓库能拉包。找一台配好settings.xml的机器,删掉本地仓库里某个依赖,重新构建:
mvn dependency:get -Dartifact=org.slf4j:slf4j-api:1.7.36能下载成功,说明私服代理链路通了。如果报错,去 Nexus 界面的Browse里看maven-central缓存里有没有这个包,没有就是代理没生效,检查maven-public组里有没有把maven-central加进去。
第三步,确认发布链路通。用一个测试项目执行mvn deploy,然后去 Nexus 界面的maven-releases或maven-snapshots里看构件在不在。在,说明认证和写入都正常。这一步最容易暴露id不匹配和权限问题。
验证通过后,把admin.password删掉,确认管理员密码已改,服务账户是低权限账户。这三步走完,这套nexus-3.45.0-01-win64才算真正落地。
从那以后我每次装完 Nexus,都强制走一遍「端口监听 → 代理拉包 → 发布验证」这三步,不再凭界面能打开就认为装好了。希望帮到你。
本文还有配套的精品资源,点击获取