Quarkusエクステンションレジストリ
Quarkus CLI 、 Maven 、 Gradle プラグインなどのQuarkus開発ツール、または code.quarkus.io を使用して、Quarkusエコシステムを一覧表示し、特定の条件に一致するエクステンションを検索できます。Quarkusエコシステムには、 Quarkusプラットフォーム エクステンションや、コミュニティによって提供されたその他のさまざまなエクステンションが含まれ、その多くは Quarkiverse Hub でホストされています。
利用可能なすべてのQuarkusエクステンションに関する情報は、 Quarkus extension registries によって開発ツールに提供されます。
Quarkusのエクステンションレジストリは、以下の情報を提供するデータベースです:
-
利用可能なQuarkusプラットフォームのうち、どのプラットフォームが新規プロジェクトやアップデートに推奨されているか。
-
利用可能なプラットフォーム以外のエクステンションについて、それらがどのQuarkusバージョンと互換性があるか。
registry.quarkus.io
registry.quarkus.io にあるレジストリは、デフォルトのQuarkusコミュニティエクステンションレジストリです。このレジストリは、 Quarkusコミュニティプラットフォーム のリリースごとに更新され、 Quarkiverse Hub にホストされているエクステンションも含まれます。
Mavenリポジトリ
registry.quarkus.io にあるレジストリは、Maven スナップショット リポジトリであり、プラットフォームとエクステンションカタログをMaven JSONアーティファクトとして開発ツールに提供します。エクステンションカタログはダウンロードされると、ユーザーのローカルMavenリポジトリにキャッシュされ、インターネットネットワーク(またはレジストリ自体)が利用できない場合でも、開発ツールで利用できます。
ローカルにキャッシュされたエクステンションカタログアーティファクトは、定期的に更新がチェックされ、それらのカタログの新しいバージョンがレジストリで利用可能な場合は更新されます。更新をチェックするデフォルトの間隔は毎日で、これはSNAPSHOTアーティファクトのデフォルトのMavenリポジトリ updatePolicy
に一致します。
Mavenリポジトリの設定
以下のリポジトリの設定は、説明のためだけに示されており、ユーザーの settings.xml やアプリケーションの pom.xml に追加する必要はありません。Quarkusの開発ツールには、このリポジトリがあらかじめ設定されています。
|
registry.quarkus.io の完全なMaven リポジトリ設定 は次のとおりです。
<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 resolverが初期化されると、関連するMavenミラーとプロキシは、ユーザー settings.xml
で registry.quarkus.io Mavenリポジトリが構成されていたかのように、自動的に registry.quarkus.io Mavenリポジトリ構成に適応します。
つまり、例えば、一致するMavenリポジトリミラーが registry.quarkus.io Mavenリポジトリに適用された場合、対応するMavenサーバーインスタンス(Nexusなど)のミラーリポジトリグループに registry.quarkus.io Mavenリポジトリを追加する必要があることを意味します。
デフォルトのレジストリMavenリポジトリ設定の上書き
デフォルトのレジストリMavenリポジトリ設定はユーザー settings.xml
で、 registry.quarkus.io
を <id>
値として希望の <repository>
構成を追加するだけで上書きすることができます。ユーザー settings.xml
にそのようなリポジトリ設定がある場合、開発ツールは、上記のデフォルトの registry.quarkus.io Maven リポジトリ設定の代わりに、そのリポジトリを使用します。
Quarkus Extensionのレジストリクライアント設定
通常、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
の2つのレジストリが有効になります。レジストリの順序は実際に重要です。Quarkusの開発ツールがユーザーの要求に応じてエクステンションを探す場合、レジストリは設定された順、つまりリストの上から下に向かって検索されます。最初に見つかったエクステンションやプラットフォームは、ユーザーが好むものとして扱われます。
registry.quarkus.io は、通常、明示的に設定する必要のないデフォルトのレジストリです。ただし、ユーザーがカスタムレジストリリストを提供し、 registry.quarkus.io がその中にない場合、 registry.quarkus.io は有効化され ません 。
|
たとえば、デフォルトの registry.quarkus.io レジストリをカスタムレジストリに置き換えるレジストリクライアント設定を以下に示します:
registries:
- registry.acme.org
レジストリキャッシュ更新ポリシーの調整
通常、Quarkusのエクステンションレジストリは、Mavenスナップショットリポジトリとして実装されます。レジストリからMavenアーティファクトとして解決されたプラットフォームおよびエクステンションカタログは、ユーザーのローカルMavenリポジトリにキャッシュされます。プラットフォームとエクステンションカタログは、実際には、レジストリクライアントによって定期的に更新がチェックされる SNAPSHOT
アーティファクトです。更新をチェックするレジストリのデフォルトの間隔は、Maven の updatePolicy
snapshot repositories のデフォルト値と一致しており、 daily
となっています。このデフォルトは、例えばレジストリ設定で上書きすることができます:
registries:
- registry.acme.org:
update-policy: "always"
- registry.quarkus.io
上記の例では、 registry.acme.org
レジストリは、カタログ要求ごとにカタログの更新がチェックされ、 registry.quarkus.io
レジストリは、1日1回(その日の最初のカタログ要求時)にカタログの更新がチェックされます。
以下がレジストリの update-policy
の値の選択肢の完全なリストです:
-
always- カタログ要求のたびに更新情報を確認する。
-
daily(デフォルト) - 1日1回、最初のカタログ要求時に、カタログの更新をチェック。
-
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