前言
Sonatype Nexus 资源库支持代理(proxy)、托管(hosted)和组(group)资源库。
一、代理(proxy)资源库
代理资源库是链接到另一个远程(remote)资源库的资源库。当有人请求一个组件时,该请求首先会转到代理资源库,以查看该组件在其本地内容中是否可用。如果该组件在代理资源库中不可用,Nexus 资源库就会在远程资源库中查找该组件。然后,Nexus 资源库会在本地检索并在代理资源库中存储该组件。如果有人再次请求相同的组件,Nexus资源库现在就能在代理资源库中找到它,并通过本地存储满足请求。这就消除了再次从远程资源库检索组件的网络带宽和时间开销。
默认情况下,Sonatype Nexus 资源库附带以下配置的代理资源库:
maven-central
该代理资源库可访问中央仓库(Central Repository,以前称为 Maven Central)。它是 Apache Maven 内置的默认组件库,并得到 Gradle、SBT 或 Ant/Ivy 等其他构建工具的大力支持。
可以将中央仓库修改为阿里镜像:https://maven.aliyun.com/repository/central
nuget.org 代理
该代理仓库可访问 NuGet Gallery。它是用于 .Net 开发的 nuget 软件包管理工具所使用的默认组件库。
二、托管(hosted)资源库
托管资源库是将组件存储在Nexus 资源库中,作为这些组件的权威位置的资源库。
例如:把Oracle JDBC 驱动程序托管到Nexus资源库中,这个资源库就是Oracle JDBC
驱动程序的权威位置,以后开发人员都从这个位置获取。
默认情况下,资源库管理器会随附以下已配置的托管资源库:
maven-releases
该托管资源库使用带有发布(release)版本策略的 maven2 资源库格式。该资源库旨在作为您所在组织发布内部版本的资源库。您还可以将此资源库用于外部资源库中不可用、因此无法通过配置的代理资源库检索的第三方组件。这些组件的例子可能是商业专有库,如您所在组织可能引用的 Oracle JDBC 驱动程序。
这里的maven指的是资源库的格式;
Nexus帮我们创建了一个托管资源库,但是其中没有组件;
托管资源库可以用于两个目的:
- 1)组织内部的组件正式版本的发布
- 2)中央仓库没有的第三方组件
下面我们在maven-releases中上传Oracle JDBC 驱动程序。
- 从https://mvnrepository.com/查找并下载Oracle JDBC 驱动程序
- 上传至Nexus的maven-releases资源库
- 在Nexus的maven-releases资源库查看Oracle JDBC 驱动程序
maven-snapshots
该托管资源库使用具有快照(snapshot)版本策略的 maven2 版本库格式。其目的是作为您所在组织发布内部开发版本(也称为快照)的资源库。
nuget 托管
在此托管资源库中,您所在组织可以使用 nuget 资源库格式发布内部版本。您还可以使用该资源库来发布外部资源库中不可用的第三方组件,这些组件可能会被代理访问。
三、组(group)资源库
组资源库将多个资源库(包括其他资源库组)合并为一个资源库。这样,用户就可以通过单个 URL 来满足配置需求,管理员也可以继续向资源库组添加更多资源库和组件。
Sonatype Nexus 资源库支持以下格式的组资源库:
- Docker
- Go
- Maven2
- npm
- NuGet
- PyPI
- R
- Raw
- RubyGems
- Rust
- Cargo
- Yum
- Sonatype Nexus Repository 随附以下版本库组:
maven-public
maven-public 组是 maven2 格式的资源库组,将中央版本库的重要外部代理资源库与托管资源库 maven-releases 和 maven-snapshots 结合在一起。这样,您就可以在一个简单易用的单一版本库和 URL 中公开中央版本库的组件以及您的内部组件。
nuget 组
该组将 nuget 格式的资源库 nuget-hosted 和 nuget.org-proxy 合并为一个资源库,供您使用 NuGet 进行 .Net 开发。
四、总结
本文介绍了Maven私服Nexus中的资源库类型
代理proxy资源库:maven-central,用于代理中央仓库;
托管hosted资源库:maven-releases,用于存储组织内部组件和第三方组件;
组group资源库:maven-public,旨在为私服提供一个统一的访问入口。