Quarkus 扩展注册表
Quarkus 开发工具,例如 Quarkus CLI、Maven 和 Gradle 插件,或 code.quarkus.io 可用于列出和搜索 Quarkus 生态系统中符合特定条件的扩展。这包括 Quarkus 平台 扩展以及社区贡献的各种其他扩展,其中许多都托管在 Quarkiverse Hub 上。
所有可用 Quarkus 扩展的信息由Quarkus 扩展注册表提供给开发工具。
Quarkus 扩展注册表是一个数据库,提供有关以下信息
-
可用的 Quarkus 平台,指出其中哪些平台目前推荐用于新项目和/或更新;
-
可用的非平台扩展,指出它们与哪些 Quarkus 版本兼容。
registry.quarkus.io
托管在 registry.quarkus.io 上的注册表是默认的 Quarkus 社区扩展注册表。它会在每次发布 Quarkus 社区平台时更新,并包含托管在 Quarkiverse Hub 上的扩展。
Maven 仓库
托管在 registry.quarkus.io 上的注册表是一个 Maven快照仓库,它将平台和扩展目录作为 Maven JSON 构件提供给开发工具。下载后,扩展目录将被缓存到用户的本地 Maven 仓库中,即使 Internet 网络(或注册表本身)不可用,开发工具也可以访问它们。
缓存的扩展目录构件将定期检查更新,并在注册表中提供更新的较新版本时进行更新。默认的更新检查间隔是每日,这与 SNAPSHOT 构件的默认 Maven 仓库 updatePolicy
相匹配。
Maven 仓库配置
下面的仓库配置仅用于说明目的,不需要添加到用户 settings.xml 或应用程序的 pom.xml 。Quarkus 开发工具自带此预配置的仓库。 |
<repository>
<id>registry.quarkus.io</id>
<name>Quarkus community extension registry</name>
<url>https://registry.quarkus.io/maven</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</repository>
当 Quarkus 开发工具初始化时,此仓库配置会自动添加到 Maven 解析器中,用于从 registry.quarkus.io 解析平台和扩展目录。
Maven 仓库镜像和代理
当 Quarkus 开发工具的 Maven 解析器初始化时,用户 settings.xml
中找到的相关 Maven 镜像和代理会自动应用于 registry.quarkus.io Maven 仓库配置,如同 registry.quarkus.io Maven 仓库已在用户 settings.xml
中配置一样。
这意味着,例如,如果一个匹配的 Maven 仓库镜像已应用于 registry.quarkus.io Maven 仓库,那么 registry.quarkus.io Maven 仓库必须添加到相应的 Maven 服务器实例(例如 Nexus)的镜像仓库组中。
覆盖默认注册表 Maven 仓库配置
默认注册表 Maven 仓库配置实际上可以通过在用户 settings.xml
中添加具有 registry.quarkus.io
作为其 <id>
值的所需 <repository>
配置来覆盖。如果在用户 settings.xml
中找到此类仓库配置,开发工具将使用它来代替上面显示的默认 registry.quarkus.io Maven 仓库配置。
Quarkus 扩展注册表客户端配置
通常,Quarkus 社区用户无需在他们的环境中进行任何与注册表相关的配置。托管在 registry.quarkus.io 上的注册表默认在所有 Quarkus 开发工具中都已启用。然而,在某些情况下,自定义注册表客户端配置可能很有用。例如,更改本地注册表缓存更新策略或配置额外的(非默认)Quarkus 扩展注册表。
注册表客户端配置位置
当 Quarkus 开发工具启动时,会按照以下步骤搜索注册表客户端配置文件
-
检查
quarkus.tools.config
系统属性,如果存在,其值将用作注册表客户端配置文件的路径; -
检查当前目录是否包含
.quarkus/config.yaml
文件,如果文件存在,则用于配置注册表客户端; -
检查用户主目录是否包含
~/.quarkus/config.yaml
文件,如果文件存在,则用于配置注册表客户端; -
如果以上任何步骤都未找到配置文件,则将使用默认的 registry.quarkus.io 配置。
配置多个注册表
registry.quarkus.io 是默认的 Quarkus 社区扩展注册表,但它并不总是唯一的注册表。其他组织可能会发现创建自己的 Quarkus 扩展注册表来提供自己的 Quarkus 平台和/或单独的(非平台)Quarkus 扩展很有用。希望在其环境中启用自定义 Quarkus 扩展注册表的用户需要将它们添加到注册表客户端配置文件中。
注册表客户端配置文件是一个简单的 YAML 文件,其中包含注册表列表,例如
registries:
- registry.acme.org
- registry.quarkus.io
上述配置启用了两个注册表:registry.acme.org
和 registry.quarkus.io
。注册表的顺序实际上很重要。当 Quarkus 开发工具根据用户请求查找扩展时,将按配置顺序搜索注册表,即从列表的顶部到底部。首先找到的扩展和平台将作为首选显示给用户。
registry.quarkus.io 是默认注册表,通常不需要显式配置,但是如果用户提供了自定义注册表列表并且其中不包含 registry.quarkus.io ,则 registry.quarkus.io 将不会被启用。 |
例如,这是一个将默认 registry.quarkus.io 注册表替换为自定义注册表的注册表客户端配置
registries:
- registry.acme.org
调整注册表缓存更新策略
通常,Quarkus 扩展注册表将实现为 Maven 快照仓库。从注册表中解析的平台和扩展目录作为 Maven 构件将被缓存到用户的本地 Maven 仓库中。平台和扩展目录实际上是 SNAPSHOT
构件,注册表客户端会定期检查它们的更新。默认注册表更新检查间隔与 Maven 的 updatePolicy
对 快照仓库 的默认值相匹配,即 daily
。可以在注册表配置中覆盖此默认值,例如
registries:
- registry.acme.org:
update-policy: "always"
- registry.quarkus.io
在上面的示例中,将在每次目录请求时检查 registry.acme.org
注册表以获取目录更新,而 registry.quarkus.io
注册表将在每天的第一次目录请求时检查目录更新。
以下是注册表 update-policy
值的所有可能选项
-
always - 每次目录请求时检查更新;
-
daily (默认) - 每天的第一次目录请求时检查目录更新;
-
interval:X (其中 X 是分钟为单位的整数) - 自定义间隔(分钟);
-
never - 解析一次目录,并且永远不检查更新。
在配置中禁用注册表
配置文件中列出的所有注册表默认都已启用。但是,可以通过为其配置添加 enabled: false
来禁用注册表。例如
registries:
- registry.acme.org
- registry.quarkus.io:
enabled: false
在上面的配置中,只有 registry.acme.org
被启用。上面的配置等同于
registries:
- registry.acme.org
启用调试模式
注册表客户端默认不会记录太多信息。但是,它会在后台从 Maven 仓库解析各种构件。如果您想在日志中看到构件传输和其他调试相关消息,可以在配置中启用调试模式。例如
debug: true
registries:
- registry.acme.org
- registry.quarkus.io
覆盖注册表 URL
有时注册表的 URL 可能会更改,但 ID 需要保持不变(因为需要查询 Maven 坐标)。要覆盖注册表 URL,请添加以下内容
registries:
- registry.acme.org
- registry.quarkus.io:
maven:
repository:
url: https://internal.registry.acme.org/maven
如何注册为 Nexus 仓库代理
您可以将 Quarkus 扩展注册表注册为 Nexus 仓库代理。您需要是管理员才能执行这些操作。
Nexus 2.x
需要设置一些选项
-
将
Repository Policy
设置为Snapshot
; -
禁用
Download Remote Indexes
; -
禁用
Allow File Browsing
; -
禁用
Include in Search
。
下面是如何设置的示例
Nexus 3.x
-
创建一个
maven2(proxy)
仓库 -
将
Version Policy
设置为Snapshot
-
将
Remote Storage
URL 设置为https://registry.quarkus.io/maven