Maven 仓库:Nexus 代理、发布与依赖可重现
区分 hosted、proxy、group 和 Release、Snapshot,定位认证、缓存与元数据问题。
Maven 仓库:Nexus 依赖与发布治理
职责与发行形态边界
图中 Maven 仓库对应 Nexus,本方案覆盖 Java/JVM 依赖代理、内部制品发布和版本追踪,不将它与所有软件格式管理混为一谈。站内工具链接是 Nexus Repository Core 候选;Core、Community Edition 与 Pro 的功能、许可和部署形态需单独确认,不能混用安装、数据库或高可用指令。Nexus Core 官方仓库
本文没有创建真实仓库或修改构建配置,所有上传、缓存清理、权限调整和恢复演练均待目标环境授权。
前提依赖与仓库分层
区分 hosted 保存内部发布物、proxy 代理批准上游、group 聚合读取入口;发布目标与聚合下载入口不是同一个职责。Maven 的 Release 和 Snapshot 有不同版本语义,分别配置可防止测试迭代版本混入稳定依赖。Sonatype Maven 仓库说明
登记每个仓库的负责人、允许坐标前缀、上游来源、读写角色、版本策略、保留和 blob 存储。站内 Core 候选使用的实际数据库形态应从所选版本核验,不默认支持外部 PostgreSQL。依赖代理需检查出口、证书、供应方访问许可和客户端缓存策略。
接入与可重现构建流程
先用隔离项目配置统一下载入口,验证普通依赖与构建插件都按预期解析,再以有限权限账号发布专用测试坐标。发布身份只写所需 hosted 仓库,读取身份不拥有覆盖和删除权限;认证值通过受控构建凭据提供,不进入 POM 或公开示例。
记录 groupId、artifactId、version、打包类型、构建编号和文件校验值。正式版本要求同一坐标内容稳定,修正错误时使用新版本并说明影响;Snapshot 只用于批准的开发流程,生产构建应锁定可追踪依赖,不依赖不断变化的最新解析结果。
日常巡检
检查下载耗时、代理上游错误、发布拒绝、存储增长、清理任务及凭据期限。用一个新的隔离本地缓存执行样例解析,以区分客户端已有缓存与仓库真实可用性;不要清空所有开发者缓存作为常规巡检。
定期比对正式制品的 POM、二进制和校验值,核对发布记录中是否仍引用待清理 Snapshot。清理前保留已批准回退和离线构建所需版本,公共上游也可能删除内容,不能假设任意依赖永远可重新下载。
故障分支
401 或 403 先区分认证失败与仓库权限拒绝,核对客户端 server 标识与发布目标匹配;404 则检查坐标、版本策略、group 成员及上游缓存状态。某台构建机失败而其他机器正常时检查本地缓存和配置差异,不立即改服务器全局策略。
发布失败先确认目标是否已存在同一坐标、是否禁止重复发布以及服务端是否已经写入部分资产。缺少 POM 或校验不匹配时隔离该版本并调查源构建,不通过开放覆盖把问题静默替换掉。上游不可达时,已缓存与未缓存依赖的行为分开验证。
安全与备份恢复
内部 hosted 制品是关键资产,备份需覆盖数据库元数据、blob、配置和密钥;proxy 缓存的恢复优先级另行评估。Sonatype 的恢复方法随数据库及部署形态变化,实施前需选择与所用 Core、CE 或 Pro 及版本匹配的流程。官方备份恢复入口
本手册不提供跨 H2 与 PostgreSQL 的通用恢复命令。演练在隔离目标恢复一致批次数据,并通过干净客户端解析一组内部正式制品、插件及传递依赖,核对校验值。恢复点之后新增的正式坐标要与构建记录对账;配置回退不会找回已删除的 blob。
验收与停止点
要求证明读写账号隔离、发布坐标范围受限、正式版本不可被未授权覆盖、上游故障影响可解释,以及恢复后仍可解析完整依赖树。数据库形态不清、版本许可未确认、内部制品无备份或正式依赖随时变化时,停止生产构建接入。
官方参考
仓库分层参照 Nexus 仓库管理,具体能力再对照选定发行版本。构建凭据与重试边界见Jenkins 手册;其他格式的评估见未选型软件仓库手册。