「Nexus」- 常见问题处理

应用

场景方案 | Solutions to Scenarios
nexus 搭建 maven 私服 | https://www.cnblogs.com/exmyth/p/5693153.html
As a Helm Repositories | https://help.sonatype.com/en/helm-repositories.html

上传制品到仓库

How to manually deploy artifacts in Nexus Repository Manager OSS 3
Guide to deploying 3rd party JARs to remote repository
Maven Deploy to Nexus
How can I programmatically upload files into Nexus 3?

Node.js,Unable to authenticate, need: BASIC realm=”Sonatype Nexus Repository Manager”

nexus部署之后,npm包publish 报401问题。
nexus – Unable to publish to an NPM Registry (local) – Stack Overflow

Maven | Hosted, Group, Proxy

DeepSeek / nexus 仓库中 Type group hosted 的区别

# Nexus 仓库类型详解:group、hosted 和 proxy

在 Nexus 仓库管理器中,有三种主要的仓库类型:group(组)、hosted(托管)和 proxy(代理)。理解它们的区别对于合理配置 Maven 仓库至关重要。

## 1. 仓库类型对比

类型 用途 是否存储构件 是否访问远程 典型示例
hosted 存储内部发布的构件 公司内部发布的jar包
proxy 代理远程仓库 可缓存 代理Maven中央仓库
group 聚合多个仓库为一个统一访问入口 组合公司内部和公共仓库的组

## 2. 详细解释

### 2.1 Hosted 仓库(托管仓库)

特点
– 用于存储自己团队或公司内部开发的构件
– Nexus 服务器物理存储这些构件
– 不可配置远程仓库地址

使用场景
– 发布内部开发的jar包
– 存储不能公开的私有构件
– 保留特定版本的构件

常见 hosted 仓库
– `maven-releases`:存放正式发布版本(版本号不带SNAPSHOT)
– `maven-snapshots`:存放快照版本(版本号带SNAPSHOT)
– `maven-private`:完全私有的内部仓库

配置示例
“`xml
<!– settings.xml 中配置 –>
<repository>
<id>company-releases</id>
<name>Company Releases</name>
<url>http://nexus.example.com/repository/maven-releases/</url>
<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>false</enabled>

</releases>

</repository>

“`

### 2.2 Proxy 仓库(代理仓库)

特点
– 代理远程仓库(如Maven中央仓库)
– 会缓存下载过的构件到本地
– 需要配置远程仓库URL

使用场景
– 加速访问公共仓库(如Maven Central)
– 在无法直接访问外网时作为代理
– 控制对特定外部仓库的访问

常见 proxy 仓库
– `maven-central`:代理Maven中央仓库
– `jboss-public`:代理JBoss仓库
– `google-maven`:代理Google仓库

配置示例
“`xml
<!– settings.xml 中配置 –>
<repository>
<id>central-proxy</id>
<name>Central Proxy</name>
<url>http://nexus.example.com/repository/maven-central/</url>
</repository>
“`

### 2.3 Group 仓库(仓库组)

特点
不实际存储构件,只是多个仓库的逻辑集合
– 按顺序搜索成员仓库中的构件
– 为客户端提供统一的访问入口

使用场景
– 聚合多个仓库(hosted + proxy)
– 简化客户端配置(只需配置一个group仓库)
– 控制仓库搜索顺序

典型 group 仓库
– `maven-public`:通常包含:
– maven-releases (hosted)
– maven-snapshots (hosted)
– maven-central (proxy)
– 其他第三方proxy仓库

配置示例
“`xml
<!– settings.xml 中配置 –>
<repository>
<id>public-group</id>
<name>Public Group</name>
<url>http://nexus.example.com/repository/maven-public/</url>
</repository>
“`

## 3. 组合使用的最佳实践

### 3.1 推荐仓库结构

“`
maven-public (group)
├─ maven-releases (hosted)
├─ maven-snapshots (hosted)
└─ maven-central (proxy)
“`

### 3.2 settings.xml 配置示例

“`xml
<mirrors>
<mirror>

<id>nexus</id>

<name>Internal Nexus</name>

<url>
http://nexus.example.com/repository/maven-public/</url>

<mirrorOf>*</mirrorOf>

</mirror>

</mirrors>

<profiles>
<profile>

<id>nexus</id>

<repositories>

<repository>
<id>nexus</id>

<name>Nexus</name>

<url>
http://nexus.example.com/repository/maven-public/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>
</repository>

</repositories>

</profile>

</profiles>

“`

## 4. 三种仓库的交互流程

  1. 客户端请求构件

– 请求发送到group仓库

– group按配置顺序搜索成员仓库

  1. 搜索顺序

– 先搜索hosted仓库(检查是否有内部构件)

– 然后搜索proxy仓库(如果没有则从远程下载并缓存)

  1. 返回结果

– 找到即返回

– 全部未找到则返回404

## 5. 管理建议

  1. 合理排序group成员

– 将内部hosted仓库放在前面

– 频繁使用的proxy仓库靠前

  1. 权限控制

– 对hosted仓库设置严格的写权限

– 对proxy仓库设置匿名读权限

  1. 定期清理

– 清理过期的snapshot构件

– 清理长时间未使用的缓存构件

通过合理配置这三种仓库类型,可以构建高效、可靠的企业级Maven仓库体系。