应用
场景方案 | 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>
</releases>
<snapshots>
</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>
<name>Internal Nexus</name>
<url>
http://nexus.example.com/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<name>Nexus</name>
<url>
http://nexus.example.com/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repositories>
</profile>
</profiles>
“`
## 4. 三种仓库的交互流程
- 客户端请求构件:
– 请求发送到group仓库
– group按配置顺序搜索成员仓库
- 搜索顺序:
– 先搜索hosted仓库(检查是否有内部构件)
– 然后搜索proxy仓库(如果没有则从远程下载并缓存)
- 返回结果:
– 找到即返回
– 全部未找到则返回404
## 5. 管理建议
- 合理排序group成员:
– 将内部hosted仓库放在前面
– 频繁使用的proxy仓库靠前
- 权限控制:
– 对hosted仓库设置严格的写权限
– 对proxy仓库设置匿名读权限
- 定期清理:
– 清理过期的snapshot构件
– 清理长时间未使用的缓存构件
通过合理配置这三种仓库类型,可以构建高效、可靠的企业级Maven仓库体系。