Java Component Repository Management with Nexus Repository Manager Server
来自koorka知识分享
仓库(Repository)是提供给用户的组件的容器。创建和管理存储库是Nexus Repository Manager配置的重要组成部分,因为它使您可以向用户公开更多组件。 它使用多种不同的存储库格式支持代理存储库( proxy repositories),托管存储库(hosted repositories)和存储库组( repository groups )。
存储库的二进制部分存储在Blob存储(Blob Stores)中,可以通过从“管理”菜单的“Repository”子菜单中选择“ Blob Stores”来进行配置。
要管理存储库,请在“管理”菜单的“Repository”子菜单中选择“Repositories”项。
目录
- 1 代理存储库(Proxy Repository)
- 2 托管存储库(Hosted Repository)
- 3 储存库组(Repository Group)
- 4 管理存储库和存储库组(Managing Repositories and Repository Groups)
- 5 管理仓库的存储(Blob Stores)
- 6 管理内容选择器(Content Selectors)
- 7 管理清理策略(Cleanup Policies)
- 8 管理路由规则(Routing Rules)
代理存储库(Proxy Repository)
具有代理类型的存储库,也称为代理存储库,是链接到远程存储库的存储库。 对组件的任何请求都将根据代理存储库的本地内容进行验证。 如果未找到本地组件,则将请求转发到远程存储库。 然后检索组件并将其本地存储在存储库管理器中,该存储库管理器充当缓存。 然后,从本地存储满足对相同组件的后续请求,因此消除了再次从远程存储库中检索组件的网络带宽和时间开销。
默认情况下,存储库管理器附带以下已配置的代理存储库:
maven-central
该代理存储库访问中央存储库(Central Repository)(以前称为Maven Central)。 它是Apache Maven内置的默认组件存储库,并由Gradle,SBT或Ant / Ivy等其他构建工具很好地支持。
nuget.org-proxy
该代理存储库访问NuGet Gallery。 它是用于.Net开发的nuget软件包管理工具使用的默认组件存储库。
托管存储库(Hosted Repository)
具有托管类型的存储库,也称为托管存储库,是一种将组件存储在存储库管理器中作为这些组件的权威位置的存储库。
默认情况下,存储库管理器随附以下已配置的托管存储库:
maven-releases
该托管存储库使用带有发布版本策略的maven2存储库格式。 它旨在成为您的组织发布内部版本的存储库。 您也可以将此存储库用于外部存储库中不可用的第三方组件,因此无法通过已配置的代理存储库进行检索。 这些组件的示例可以是商业专有库,例如您的组织可能引用的Oracle JDBC驱动程序。
maven-snapshots
该托管存储库使用带有快照版本策略的maven2存储库格式。 它旨在成为您的组织发布内部开发版本(也称为快照)的存储库。
nuget-hosted
在此托管存储库中,您的组织可以使用NuGet存储库格式在存储库中发布内部发行版。 您还可以将此存储库用于外部存储库中不可用的第三方组件,这些第三方组件可能被代理以获取对组件的访问权。
储存库组(Repository Group)
具有类型组的存储库(也称为存储库组)代表Nexus Repository Manager的强大功能。 它们使您可以在单个存储库中组合多个存储库和其他存储库组。 反过来,这意味着您的用户可以依靠单个URL来满足他们的配置需求,而管理员可以向存储库组添加更多存储库,从而添加组件。
存储库管理器附带以下组:
maven-public
maven-public组是maven2格式存储库的存储库组,它将中央存储库的重要外部代理存储库与托管存储库maven-releases和maven-snapshots组合在一起。 这使您可以将中央存储库的组件以及内部组件公开在一个简单易用的存储库中,从而可以显示URL。
nuget-group
该组将nuget格式的存储库nuget-hosted和nuget.org-proxy合并到一个存储库中,供您使用NuGet开发.Net。
管理存储库和存储库组(Managing Repositories and Repository Groups)
可以通过“管理”菜单的“Repository”子菜单中的“Repositories”项使用存储库和存储库组的管理用户界面。 它使您可以创建和配置存储库以及删除它们并执行各种维护操作。
仓库列表中各个字段的含义如下:
列名称 | 含义 |
---|---|
Name | 存储库或存储库组的唯一名称 |
Type | 具有代理值或托管于存储库或存储库组的组的存储库类型 |
Format | 具有值(例如maven2,nuget或其他)的存储库中用于存储的存储库格式 |
Status | 存储库的状态以及有关状态的更多信息。 运行中的存储库将显示状态为“联机”。 附加信息可以例如是关于SSL认证问题或当前禁用的代理存储库的远程存储库状态的信息 |
URL | 复制按钮将提示一个对话框,其中包含直接URL路径,从而暴露存储库 |
Health Check | 显示先前运行的“存储库运行状况检查”中的存储库运行状况统计信息,或通过按钮启动分析 |
创建仓库(Create Repository)
当点击“Create Repository”按钮后将触发一个对话框,以选择新存储库的类型/配方(Recipe)。 Recipe将存储库的格式和类型组合为一个选择。 根据您的存储库管理器版本和已安装的插件,可用选项的列表会有所不同。
例如,要创建另一个maven2格式的发布存储库,您可以在对话框中单击包含maven2(托管)配方的行。 如果要代理Maven2存储库,请选择Maven 2(代理)。 另一方面,如果要代理nuget存储库,请选择nuget(代理)。 使用maven2(组),可以为maven2存储库创建存储库组。
选择之后,将显示配置视图,可让您填写所需的参数和一些进一步的配置。 视图上的确切详细信息取决于所选的存储库提供者。
创建Maven2代理仓库
在创建时recipe选择“maven2(proxy)”,在配置视图中各项参数含义如下:
创建maven托管仓库(hosted repository)
Deployment policy:控制是否允许对组件进行重新部署和更新。开发版本仓库选择允许重新部署(Allow redeploy),发行版本仓库选择(Disable redeploy)。
其它选项参考创建代理仓库。
创建maven仓库组(repository group)
Member repositories : 将需要加入该组的其它仓库添加到members列表即可。
其它选项参考创建代理仓库。
修改/维护仓库
需要修改或维护仓库,在点击仓库列表仓库的名称即可进行修改/维护界面。主要功能:
名称 | 功能 | 适用仓库 | 备注 |
---|---|---|---|
Delete repository | 使用删除存储库按钮可以删除存储库以及所有相关的配置和组件。 | 所有 | |
Invalidate cache | 使代理存储库上的高速缓存无效将清除代理高速缓存,以便在下次请求它们时,将再次检查高速缓存的所有可用项是否有任何更改。 这还将清除代理存储库的负缓存,以便在下次请求它们时将再次检查在定义的缓存期内未找到的任何项目。 | 代理仓库和仓库组 | |
Rebuild Index | 使用“重建索引”按钮,可以删除并重新创建代理存储库的搜索索引,从而将内容与搜索索引同步。 | 代理仓库和托管仓库 | |
Disable/enable HealthCheck | 启用或禁用健康检查。参考: https://blog.sonatype.com/how-to-use-the-new-repository-health-check-2.0 | 代理仓库 |
管理仓库的存储(Blob Stores)
Blob存储是组件及其资产的二进制部分的内部存储机制。 每个Blob存储可以被一个或多个仓库库和仓库组使用。 在安装期间,系统自动创建了一个基于文件系统的默认(default)Blob存储。
NXRM(NeXus Repository Manager)支持两种类型的Blob存储:
- File : 将内容存储在本地文件系统上
- S3: 将文件内容存在到 AWS S3 bucket。
本文只介绍File类型的Blob存储。S3有由于涉及到AWS的使用,请查看相关文档进行配置。或参考:
创建File类型的Blob存储
在管理菜单中点击“Create blob store”后会弹出相应对话框,各项含义如下:
名称 | 功能 | 备注 | |
---|---|---|---|
Type | 存储的类型:File | ||
Name | 存储名称。在系统内唯一 | ||
path | 文件路径:在服务上的相对路径,如default的路径是 default,在服务器上的位置是: $workdir/blobs/default | ||
Enable Soft Quota | Type of Quota | 容量限制类型 | |
Quota limit in MB | 容量限制大小,单位为MB |
管理内容选择器(Content Selectors)
内容选择器为您提供了一种从所有内容中选择特定内容的方法。 根据CSEL(Content Selector Expression Language)编写的表达式对您选择的内容进行评估。 CSEL是JEXL(Java Expression Language)的简化版本,用于沿特定路径和存储库管理器格式可用的坐标编写查询脚本。
内容选择器允许您定义允许用户访问的内容。 在一个简化的示例中,您可以定义一个名为“ Apache Maven”的选择器,其选择表达式为path =〜“ ^ / org / apache / maven /”。 这将匹配以指定组件路径开头的所有组件。
如何创建和管理内容选择器,请参考: https://help.sonatype.com/repomanager3/configuration/repository-management#RepositoryManagement-ContentSelectors
管理清理策略(Cleanup Policies)
为节省磁盘空间和提高服务器的检索性能,NXRM提供了清理策略。对于代理库和发行版本库,一般只有老旧版本需要清理。对于快照库,可能就需要经常清理。
关于如何创建清理策略,请参阅:https://help.sonatype.com/repomanager3/cleanup-policies
在创建好清理策略后,系统会通过自带的任务执行器cleanup service定期执行清理工作。默认的清理策略为空,即不执行清理工作。
管理路由规则(Routing Rules)
路由规则有两种模式:“阻止”和“允许”。 如果匹配器之一与请求路径匹配,则选择BLOCK时,将阻止该请求,否则将允许该请求。 如果规则使用ALLOW模式,则请求路径必须至少由一个匹配器匹配,否则它将被阻止。
在需要对库内的某些资源进行访问限制时,可以添加路由规则来增强安全性。参考文档:https://help.sonatype.com/repomanager3/configuration/routing-rules