You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Nexus私有仓库配置咨询:新项目工件与依赖存储方案选型

Nexus仓库选型与配置指南

Hey there! Let me walk you through how to pick and set up Nexus repos for your exact use case—I’ve done this dozens of times for internal projects, so I know the ins and outs.

首先搞懂仓库类型的分工

你提到的Hosted和Proxy仓库是核心,但别忘了还有Group仓库(这是整合两者的关键),先明确各自的定位:

  • Hosted仓库:这就是你的私有工件“保险柜”,专门用来存储你们团队自研的工件(比如内部Jar包、自定义npm包、Docker镜像等)。它完全受你控制,只有授权的人才能上传,避免外部访问,完美匹配你存自研工件的需求。
  • Proxy仓库:相当于公共仓库的“缓存中转站”。当你的项目需要拉取公共依赖(比如Maven Central里的Spring Boot包、npm官方的React包),Nexus会先检查Proxy仓库里有没有缓存,如果没有就自动去对应的公共仓库拉取并缓存下来。这样不仅能加快依赖下载速度,还能在网络离线时依然可用,刚好满足你存储依赖工件的需求。
  • Group仓库:把Hosted和Proxy仓库整合在一起的“统一入口”。你不用让项目分别配置多个仓库地址,只需要配置Group的地址,项目就能自动从Hosted找自研工件,从Proxy找公共依赖,非常方便。

选型结论

你需要同时创建1个Hosted仓库(存自研)、至少1个Proxy仓库(对应你用的技术栈的公共仓库,比如Maven Central、npm Registry),再创建1个Group仓库(把前两者合并)。这样既满足私有存储,又能高效管理公共依赖。

具体配置步骤(以Maven为例,其他技术栈逻辑类似)

1. 创建Hosted仓库

  • 登录Nexus后台,进入「Repositories」→「Create repository」
  • 选择对应技术栈的Hosted类型,比如「maven2 (hosted)」
  • 填写仓库名称(比如internal-maven-hosted),设置版本策略:
    • 如果区分正式版和快照版,选「Mixed」;如果只存正式版,选「Release」
  • 配置存储路径(默认即可,也可以自定义),然后点击「Create repository」
  • 记得去「Security」→「Roles」创建权限角色,给开发团队分配上传/修改这个仓库的权限,普通成员只给下载权限。

2. 创建Proxy仓库

  • 同样进入「Create repository」,选择「maven2 (proxy)」
  • 填写仓库名称(比如maven-central-proxy),在「Remote storage」填入公共仓库的URL,比如Maven Central的https://repo1.maven.org/maven2/
  • 配置缓存策略:比如设置「Max age」为7天(缓存过期后会重新拉取最新版本),可以根据需求调整
  • 点击「Create repository」完成创建

3. 创建Group仓库

  • 进入「Create repository」,选择「maven2 (group)」
  • 填写仓库名称(比如internal-maven-group),在「Member repositories」里把刚才创建的Hosted和Proxy仓库添加进去
  • 调整仓库顺序:把Hosted仓库放在前面,这样如果有同名的工件(比如你们自研了一个和公共仓库重名的包),会优先使用Hosted里的版本,避免冲突
  • 点击「Create repository」

4. 项目端配置(以Maven为例)

修改项目的settings.xml,配置镜像指向Group仓库:

<mirrors>
  <mirror>
    <id>nexus-group</id>
    <mirrorOf>*</mirrorOf>
    <url>http://你的Nexus服务器地址/repository/internal-maven-group/</url>
  </mirror>
</mirrors>

同时配置私服的认证(如果需要上传工件到Hosted):

<servers>
  <server>
    <id>internal-maven-hosted</id>
    <username>你的Nexus账号</username>
    <password>你的Nexus密码</password>
  </server>
</servers>

这样你的项目就能从Group仓库拉取所有依赖,执行mvn deploy时会自动把自研工件上传到Hosted仓库。

额外小贴士

  • 如果你用的是其他技术栈(比如npm、Docker),只需要对应创建对应类型的Hosted、Proxy、Group仓库即可,逻辑完全一致
  • 定期清理Proxy仓库的过期缓存,避免占用过多磁盘空间
  • 给不同的团队分配不同的Hosted仓库权限,比如前端团队用专门的npm Hosted,后端用Maven Hosted

内容的提问来源于stack exchange,提问作者paoloo

火山引擎 最新活动