Red Hat build of Quarkus スタートガイド
第1章 Red Hat build of Quarkus スタートガイド リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、Red Hat build of Quarkus を使用して、OpenShift 環境で実行される Java で書かれたマイクロサービスベースのアプリケーションを作成できます。Quarkus アプリケーションは、Java 仮想マシン (JVM) 上で実行することも、ネイティブの実行可能ファイルにコンパイルすることもできます。ネイティブアプリケーションは、JVM アプリケーションよりもメモリー使用量が小さく、短時間で起動します。
Quarkus アプリケーションは、次のいずれかの方法で作成できます。
- Apache Maven と Quarkus Maven プラグインを使用する
- code.quarkus.redhat.com を使用する
- Quarkus コマンドラインインターフェイス (CLI) を使用する
Quarkus を使用するにあたり、まずは hello HTTP エンドポイントを公開する単純な Quarkus プロジェクトを作成、テスト、パッケージ化、実行してみましょう。依存性注入のデモンストレーションとして、hello HTTP エンドポイントは greeting Bean を使用します。
Getting Started 演習の完成例を参照するには、Quarkus Quickstarts アーカイブをダウンロードするか、Quarkus Quickstarts Git リポジトリーのクローンを作成して getting-started ディレクトリーに移動してください。
1.1. Red Hat build of Quarkus について リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus は、コンテナーおよび Red Hat OpenShift Container Platform 用に最適化された Kubernetes ネイティブ Java スタックです。Quarkus は、Eclipse MicroProfile、Eclipse Vert.x、Apache Camel、Apache Kafka、Hibernate ORM with Jakarta Persistence、Jakarta REST などの一般的な Java 標準、フレームワーク、ライブラリーと連携するように設計されています。
開発者は、Java アプリケーションに必要な Java フレームワークを選択できます。これは、Java 仮想マシン (JVM) モードで実行することも、ネイティブモードでコンパイルして実行することもできます。Quarkus は、コンテナーファーストという手法で Java アプリケーションをビルドします。コンテナーファーストのアプローチにより、コンテナー化と、マイクロサービスと関数の効率的な実行が容易になります。このため、Quarkus アプリケーションのメモリーフットプリントは小さく、起動時間が短縮されます。
Quarkus は、統一された設定、未設定のサービスの自動プロビジョニング、ライブコーディング、継続的なテストなどの機能を使用してアプリケーション開発プロセスを最適化します。これにより、コードの変更に関する即時フィードバックが提供されます。
Quarkus コミュニティーバージョンと Red Hat ビルドの Quarkus の違いについては、Quarkus コミュニティーバージョンと Red Hat ビルドの Quarkus の違い を参照してください。
1.2. 環境の準備 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus の使用を開始する前に、環境を準備する必要があります。
手順
システムで次のインストールが完了していることを確認します。
OpenJDK 17 または 21 をインストールし、
JAVA_HOME環境変数を設定して Java SDK の場所を指定している。- Red Hat build of OpenJDK をダウンロードするには、Red Hat カスタマーポータルにログインし、ソフトウェアダウンロード に移動します。
- Apache Maven 3.9.9 をインストールした。Maven は、Apache Maven Project の Web サイトから入手できます。
オプション: Quarkus コマンドラインインターフェイス (CLI) を使用する場合は、それがインストールされていることを確認してください。
- Quarkus CLI のインストール方法は、Quarkus CLI で該当するコミュニティー情報を参照してください。
Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。
1.2.1. Red Hat build of Quarkus の BOM について リンクのコピーリンクがクリップボードにコピーされました!
すべてのコア Quarkus エクステンションの依存関係バージョンは、com.redhat.quarkus.platform:quarkus-bom ファイルを使用して管理されます。
Bill of Materials (BOM) ファイルの目的は、プロジェクト内の Quarkus アーティファクトの依存関係バージョンを管理することです。これにより、プロジェクトで BOM を使用するときに、どの依存関係バージョンが連携するかを指定する必要がなくなります。代わりに、Quarkus BOM ファイルを pom.xml 設定ファイルにインポートできます。依存関係のバージョンは <dependencyManagement> セクションに含まれています。そのため、pom.xml ファイルの指定の BOM で管理される個別の Quarkus 依存関係のバージョンを記述する必要はありません。
Red Hat build of Quarkus で使用できる、サポートされるエクステンション固有の BOM に関する情報を表示するには、Red Hat build of Quarkus コンポーネントの詳細 を参照してください。
アプリケーションで使用するプラットフォームメンバーのエクステンションのメンバー固有 BOM をインポートのみインポートする必要があります。したがって、モノリシックなシングル BOM と比較して、管理する依存関係が少なくなります。すべてのメンバー固有 BOM はユニバーサル Quarkus BOM のフラグメントであるため、競合を引き起こすことなくメンバー BOM を任意の順序でインポートできます。
1.2.2. Apache Maven と Red Hat build of Quarkus リンクのコピーリンクがクリップボードにコピーされました!
Apache Maven は分散型構築自動化ツールで、Java アプリケーション開発でソフトウェアプロジェクトの作成、ビルド、管理に使用されます。
Apache Maven の詳細は、Apache Maven のドキュメントを参照してください。
Maven リポジトリー
Maven リポジトリーには、Java ライブラリー、プラグイン、およびその他のビルドアーティファクトが格納されます。Maven 2 Central Repository はデフォルトの公開リポジトリーですが、企業内にプライベートな内部リポジトリーを設置し、開発チーム間で共通のアーティファクトを共有することもできます。また、サードパーティーのリポジトリーも利用できます。
Red Hat がホストする Maven リポジトリーを Quarkus プロジェクトで使用できます。
pom.xml ファイルでプロジェクト依存関係を宣言し、$HOME/.m2/settings.xml ファイルで Maven リポジトリーへのアクセスをグローバルに設定 します。これにより、リポジトリーの詳細を各プロジェクトの POM ファイルに含める必要なく、プロジェクトが認定された Red Hat ビルドの Quarkus アーティファクトを使用するようにするのに役立ちます。
Maven プラグイン
Maven プラグインは、1 つ以上のタスクを実行する POM ファイルの定義済みの部分です。Red Hat build of Quarkus アプリケーションでは、次の Maven プラグインを使用します。
-
Quarkus Maven プラグイン (
quarkus-maven-plugin): Maven は、Quarkus プロジェクトを作成し、アプリケーションを JAR ファイルにパッケージ化し、開発モードを提供できるようになります。 -
Maven Surefire プラグイン (
maven-surefire-plugin): Quarkus がtestプロファイルを有効にすると、ビルドライフサイクルのtestフェーズでのユニットテストに、Maven Surefire プラグインが使用されます。プラグインは、テストレポートが含まれるテキストファイルと XML ファイルを生成します。
1.2.3. オンラインリポジトリーの Maven の settings.xml ファイルを設定する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat がホストする Quarkus リポジトリーを Quarkus Maven プロジェクトで使用するには、ユーザー用に settings.xml ファイルを設定します。リポジトリーマネージャーまたは共有サーバー上のリポジトリーと使用する Maven 設定は、プロジェクトの制御および管理性を向上させます。
Maven の settings.xml ファイルを変更してリポジトリーを設定する場合、変更はすべての Maven プロジェクトに適用されます。設定を特定のプロジェクトにのみ適用する場合は、-s オプションを使用して、プロジェクト固有の settings.xml ファイルへのパスを指定します。
手順
テキストエディターまたは統合開発環境 (IDE) で、Maven
$HOME/.m2/settings.xmlファイルを開きます。注記$HOME/.m2/ディレクトリーにsettings.xmlファイルが存在しない場合は、$MAVEN_HOME/conf/ディレクトリーから$HOME/.m2/ディレクトリーにsettings.xmlファイルをコピーします。以下の行を
settings.xmlファイルの<profiles>要素に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の行を
settings.xmlファイルの<activeProfiles>要素に追加し、ファイルを保存します。<activeProfile>red-hat-enterprise-maven-repository</activeProfile>
<activeProfile>red-hat-enterprise-maven-repository</activeProfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.4. Maven プロジェクトを Red Hat build of Quarkus に再設定する リンクのコピーリンクがクリップボードにコピーされました!
Quarkus コミュニティープロジェクトは、プロジェクト POM ファイルの Maven 設定を変更することで Red Hat build of Quarkus に移行できます。
前提条件
-
pom.xmlファイル内の Quarkus コミュニティーアーティファクト に依存する、Maven でビルドされた Quarkus プロジェクトがある。
手順
プロジェクトの
pom.xmlファイルの<properties>セクションで、次の値を変更します。-
<quarkus.platform.group-id>プロパティーの値をcom.redhat.quarkus.platformに変更します。 <quarkus.platform.version>プロパティーの値を3.27.0.redhat-00001に変更します。pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
1.3. Red Hat build of Quarkus 開発者ツールの設定 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus 開発者ツールを使用すると、次のようなタスクを完了できます。
- アプリケーション用の Maven プロジェクトの作成
- アプリケーションで使用するエクステンションの追加と設定
- OpenShift クラスターへのアプリケーションのデプロイ
1.3.1. Red Hat build of Quarkus エクステンションレジストリークライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
エクステンションレジストリー registry.quarkus.redhat.com は、Red Hat が提供する Quarkus エクステンションをホストします。レジストリーをレジストリークライアント設定ファイルに追加することで、このレジストリー内のエクステンションにアクセスするように Quarkus 開発者ツールを設定できます。レジストリークライアント設定ファイルは、レジストリーリストが含まれる YAML ファイルです。
-
デフォルトの Quarkus レジストリーは
registry.quarkus.ioですが、通常、これを設定する必要はありません。ただし、ユーザーがカスタムレジストリーリストを提供し、そのリストにregistry.quarkus.ioが含まれていない場合、registry.quarkus.ioは有効になりません。 - 目的のレジストリーがレジストリーリストの最初に表示されていることを確認してください。Quarkus 開発者ツールがレジストリーを検索する場合、リストの先頭からレジストリーを検索します。
手順
-
エクステンションレジストリー設定が含まれる
config.yamlファイルを開きます。拡張機能レジストリーを初めて設定する場合は、マシンの$HOME/.quarkusディレクトリーにconfig.yamlファイルを作成する必要があります。 新しいレジストリーを
config.yamlファイルに追加します。以下に例を示します。config.yaml
registries: - registry.quarkus.redhat.com - registry.quarkus.io
registries: - registry.quarkus.redhat.com - registry.quarkus.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.1.1. 拡張カタログを特定オファリングに制限 リンクのコピーリンクがクリップボードにコピーされました!
エクステンションレジストリーの registry.quarkus.redhat.com は、Red Hat が提供する Quarkus エクステンションの定義をホストします。
拡張機能は複数のオファリングに関連付けることができますが、エクステンションカタログを特定のオファリングに制限するように拡張レジストリーを設定することができます。レジストリーごとに 1 つのオファリングのみを設定できます。
次の例では、registry.quarkus.redhat.com が提供するエクステンションカタログは、redhat 製品を設定するエクステンションに限定されます。
オファリングを設定しない場合、レジストリーは完全な拡張カタログを返します。
手順
-
エクステンションレジストリー設定が含まれる
config.yamlファイルを開きます。 offering: redhatをconfig.yamlファイルに追加します。以下に例を示します。config.yaml
registries: - registry.quarkus.redhat.com offering: redhat - registry.quarkus.ioregistries: - registry.quarkus.redhat.com offering: redhat - registry.quarkus.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. Getting Started プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
getting-started プロジェクトを作成すると、単純な Quarkus アプリケーションを起動して実行できます。getting-started プロジェクトは、次のいずれかの方法で作成できます。
- Apache Maven と Quarkus Maven プラグインを使用する
- code.quarkus.redhat.com を使用して Quarkus Maven プロジェクトを生成する
- Quarkus コマンドラインインターフェイス (CLI) を使用する
前提条件
- 環境の準備が完了している。詳細は、環境の準備 を参照してください。
手順
-
要件に応じて、
getting-startedプロジェクトの作成に使用する方法を選択します。
1.4.1. Apache Maven を使用して Getting Started プロジェクトを作成する リンクのコピーリンクがクリップボードにコピーされました!
Apache Maven と Quarkus Maven プラグインを使用して、getting-started プロジェクトを作成できます。この getting-started プロジェクトを使用して、単純な Quarkus アプリケーションを起動して実行できます。
前提条件
- Maven を使用するための環境を準備している。詳細は、環境の準備 を参照してください。
-
Quarkus Maven リポジトリーを設定している。Maven を使用して Quarkus アプリケーションを作成するには、
$HOME/.m2/settings.xml ファイルで Red Hat がホストする Quarkus リポジトリーを設定します。詳細は、オンラインリポジトリーの Maven の settings.xml ファイルを設定する を参照してください。
手順
Maven が OpenJDK 17 または 21 を使用していること、Maven のバージョンが 3.9.9 であること、および
mvnが PATH 環境変数からアクセスできることを確認します。mvn --version
mvn --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 前のコマンドで OpenJDK 17 または 21 が返されない場合は、OpenJDK 17 または 21 へのパスを PATH 環境変数に追加し、前のコマンドを再度入力します。
プロジェクトを生成します。
Linux または Apple macOS を使用している場合は、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Microsoft Windows のコマンドラインを使用している場合は、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Microsoft Windows PowerShell を使用している場合は、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドにより、
./getting-startedディレクトリーに以下の要素が作成されます。- Maven プロジェクトディレクトリー構造
-
/helloで公開されるorg.acme.quickstart.GreetingResourceリソース - ネイティブモードおよび JVM モードでアプリケーションをテストするための関連するユニットテスト
-
アプリケーションの起動後に
http://localhost:8080でアクセス可能なランディングページ -
src/main/dockerディレクトリー内のサンプル Dockerfile アプリケーションの設定ファイル
注記Mandrel は macOS をサポートしていないため、Oracle GraalVM を使用してこのオペレーティングシステム上でネイティブ実行可能ファイルをビルドできます。
ベアメタル Linux または Windows ディストリビューション上で Oracle GraalVM を直接使用して、ネイティブ実行可能ファイルをビルドすることもできます。このプロセスの詳細は、Oracle GraalVM README およびリリースノートを参照してください。
サポートされる構成の詳細は、Red Hat build of Quarkus でサポートされる構成 を参照してください。
ディレクトリー構造が作成されたら、テキストエディターで
pom.xmlファイルを開き、ファイルの内容を確認します。pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pom.xmlファイルの<dependencyManagement>セクションには、Quarkus BOM が格納されています。そのため、pom.xmlファイルに個別の Quarkus 依存関係のバージョンを記述する必要はありません。この設定ファイルには、アプリケーションをパッケージ化するquarkus-maven-pluginプラグインも含まれています。pom.xmlファイル内のquarkus-rest(旧称quarkus-resteasy-reactive) 依存関係を確認します。この依存関係により、Jakarta REST アノテーションを使用して REST アプリケーションを開発できます。<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest</artifactId> </dependency><dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat build of Quarkus バージョン 3.15 以降、
quarkus-resteasy-reactiveエクステンションの名前がquarkus-restに変更されます。quarkus-resteasy-reactive依存関係を使用するアプリケーションは、依存関係を更新するよう求められます。src/main/java/org/acme/quickstart/GreetingResource.javaファイルを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このファイルには、
/helloエンドポイントに送信したリクエストに対するレスポンスとして、Hello from Quarkus RESTを返す単純な REST エンドポイントが含まれています。注記Quarkus では、Jakarta REST (旧名 JAX-RS) の
Applicationクラスがサポートされていますが、必須ではありません。さらに、デフォルトでは、GreetingResourceクラスのインスタンスは 1 つだけ作成され、リクエストごとに 1 つ作成されるわけではありません。これは、RequestScopedなどのさまざまな*Scopedアノテーションを使用して設定できます。
検証
- 開発モードで、アプリケーションのコンパイルと起動を行います。詳細は、Red Hat build of Quarkus Getting Started プロジェクトのコンパイルおよび起動 を参照してください。
- Quarkus CLI から Getting Started プロジェクトをパッケージ化して実行します。詳細は、Red Hat build of Quarkus Getting Started アプリケーションのパッケージ化および実行 を参照してください。
1.4.2. code.quarkus.redhat.com を使用して Getting Started プロジェクトを作成する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、code.quarkus.redhat.com アプリケーションを使用して Quarkus Maven プロジェクトを生成し、アプリケーションで使用するエクステンションを自動的に追加および設定できます。さらに、code.quarkus.redhat.com は、プロジェクトをネイティブ実行可能ファイルにコンパイルするために必要な設定パラメーターを自動的に管理します。
次のアクティビティーを含む Quarkus Maven プロジェクトを生成できます。
- アプリケーションの基本情報の指定
- プロジェクトに追加するエクステンションの選択
- プロジェクトファイルのダウンロード可能なアーカイブの生成
- アプリケーションをコンパイルおよび起動するカスタムコマンドの使用
前提条件
- Web ブラウザーがある。
- Apache Maven を使用するための環境を準備している。詳細は、環境の準備 を参照してください。
-
Quarkus Maven リポジトリーを設定している。Maven で Quarkus アプリケーションを作成するには、
$HOME/.m2/settings.xmlファイルで設定した Red Hat がホストする Quarkus リポジトリーを使用します。詳細は、オンラインリポジトリーの Maven の settings.xml ファイルを設定する を参照してください。 オプション: Quarkus コマンドラインインターフェイス CLI がインストールされている。これは、Quarkus を開発モードで起動する方法の 1 つとして使用できます。
詳細は、Installing the Quarkus CLI を参照してください。
Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。
手順
- Web ブラウザーで、https://code.quarkus.redhat.com に移動します。
code.quarkus.redhat.com アプリケーションでは、利用可能なバージョンのリストから、Red Hat build of Quarkus の最新リリースがデフォルトで選択されます。
注記code.quarkus.redhat.com アプリケーションでは、推奨オプションである Red Hat build of Quarkus の最新リリースが使用されます。ただし、プロジェクトの生成後に、必要に応じて
pom.xmlファイルで以前の BOM バージョンに手動で変更できますが、ベストプラクティスはデフォルトを維持することです。プロジェクトの基本情報を指定します。
-
プロジェクトのグループ名を入力します。名前の形式は、Java パッケージ命名規則に従います (例:
org.acme)。 -
プロジェクトによって生成される Maven アーティファクトの名前 (
code-with-quarkusなど) を入力します。 アプリケーションのコンパイルおよび起動に使用するビルドツールを選択します。選択したビルドツールにより、次の設定が決まります。
- 生成されるプロジェクトのディレクトリー構造
- 生成されるプロジェクトで使用される設定ファイルのフォーマット
プロジェクトの生成後に code.quarkus.redhat.com に表示される、アプリケーションのコンパイルと起動のためのカスタムビルドスクリプトおよびコマンド
注記Red Hat は、code.quarkus.redhat.com を使用して Quarkus Maven プロジェクトを作成する場合にのみサポートを提供します。
-
プロジェクトのグループ名を入力します。名前の形式は、Java パッケージ命名規則に従います (例:
アプリケーションプロジェクトに関する追加情報を指定します。
アプリケーションの詳細を含むフィールドを表示するには、More options を選択します。
-
プロジェクトによって生成されたアーティファクトに使用するバージョンを入力します。このフィールドのデフォルト値は
1.0.0-SNAPSHOTです。semantic versioning の使用が推奨されますが、別のバージョン管理タイプを指定することもできます。 code.quarkus.redhat.com でプロジェクトにスターターコードを追加するかどうかを選択します。"STARTER-CODE" でマークされたエクステンションをプロジェクトに追加する場合、このオプションを有効にして、プロジェクト生成時にそのエクステンションのサンプルクラスとリソースファイルを自動的に作成できます。ただし、サンプルコードを提供するエクステンションを追加しない場合は、このオプションは生成されたプロジェクトに影響しません。
注記code.quarkus.redhat.com アプリケーションでは、Red Hat build of Quarkus の最新リリースが自動的に使用されます。必要に応じて、プロジェクトを生成した後に
pom.xmlファイルで以前の BOM バージョンに手動で変更できますが、ベストプラクティスはデフォルトを維持することです。
使用するエクステンションを選択します。Quarkus アプリケーションには、依存関係として選択したエクステンションが含まれます。Quarkus プラットフォームにより、これらのエクステンションは今後のバージョンとの互換性も確保されます。
重要同じプロジェクトで
quarkus-restエクステンションとquarkus-resteasyエクステンションを使用しないでください。どちらも同様の機能を提供しますが、動作方法は非常に異なります。quarkus-restの使用が推奨されます。エクステンションの横にある 4 つのアイコン(
)は、エクステンションが Red Hat build of Quarkus プラットフォームリリースの一部であることを示します。Red Hat では、同じプラットフォームからのエクステンションの使用を推奨しています。エクステンションは一緒にテストおよび検証されるため、使いやすく、アップグレードも容易になります。
"STARTER-CODE" でマークされたエクステンションの場合、スターターコードを自動的に生成するオプションを有効化できます。
選択を確認するには、Generate your application を選択します。表示されるダイアログボックスには、次の項目が表示されます。
- 生成されたプロジェクトを含むアーカイブをダウンロードするためのリンク
- アプリケーションをコンパイルして起動するために使用できるコマンド
- 生成されたプロジェクトファイルを含むアーカイブをマシンに保存するには、Download the ZIP を選択します。
- アーカイブの内容を展開します。
検証
- 開発モードで、アプリケーションのコンパイルと起動を行います。詳細は、Red Hat build of Quarkus Getting Started プロジェクトのコンパイルおよび起動 を参照してください。
- Quarkus CLI から Getting Started プロジェクトをパッケージ化して実行します。詳細は、Red Hat build of Quarkus Getting Started アプリケーションのパッケージ化および実行 を参照してください。
1.4.2.1. Red Hat build of Quarkus エクステンションのサポートレベル リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、code.quarkus.redhat.com で入手して Quarkus プロジェクトに追加できるエクステンションにたいして、さまざまなレベル のサポートを提供しています。各エクステンションの名前の横にあるラベルは、サポートレベルを示します。
Red Hat は、ラベルのないエクステンションの実稼働環境での使用はサポートしません。
Red Hat は、Red Hat build of Quarkus 拡張機能に対して次のレベルのサポートを提供します。
| サポートレベル | 説明 |
|---|---|
| SUPPORTED | Red Hat は、実稼働環境のエンタープライズアプリケーションにおけるエクステンションの使用に対し、フルサポートを提供します。 |
| TECH-PREVIEW | Red Hat は、テクノロジープレビュー機能のサポート範囲 に基づき、実稼働環境におけるエクステンションの使用に対して限定的なサポートを提供します。 |
| DEPRECATED | Red Hat は、エクステンションを同じ機能を提供する最新のテクノロジーまたは実装に置き換える予定です。 |
| DEV-SUPPORT | Red Hat は、実稼働環境におけるエクステンションの使用をサポートしませんが、Red Hat 開発者が新規アプリケーションの開発で使用するために提供するコア機能をサポートします。 |
| EXPERIMENTAL | Red Hat は、エクステンションを実稼働環境で使用することをサポートしていません。エクステンションの案をまとめるために、早期のフィードバックを求めています。プラットフォーム上での安定性や長期的な組み込みは保証されていません。 |
| PREVIEW | Red Hat は、エクステンションを実稼働環境で使用することをサポートしていません。Quarkus コミュニティーバージョンのエクステンションだけが利用可能です。 |
各エクステンションの横にある矢印アイコン (⌄) をクリックすると、オーバーフローメニューを展開して、そのエクステンションの他のアクションにアクセスできます。以下に例を示します。
- コマンドラインで Quarkus Maven プラグインを使用して、既存のプロジェクトにエクステンションを追加します。
-
プロジェクトの
pom.xmlファイルにエクステンションを追加するために、XML の抜粋をコピーします。 -
各エクステンションの
groupId、artifactId、versionを取得します。 - エクステンションガイドを開きます。
1.4.3. quarkus CLI を使用して Getting Started プロジェクトを作成する リンクのコピーリンクがクリップボードにコピーされました!
Quarkus コマンドラインインターフェイス (CLI) を使用して、getting-started プロジェクトを作成できます。
Quarkus CLI を使用して、プロジェクトの作成、エクステンションの管理、ビルドおよび開発コマンドの実行を行えます。
Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。
前提条件
- Quarkus CLI がインストールされている。詳細は、環境の準備 を参照してください。
- Quarkus 開発者ツールを、エクステンションレジストリー内のエクステンションにアクセスするように設定している。詳細は、Red Hat build of Quarkus エクステンションレジストリークライアントの設定 を参照してください。
手順
プロジェクトを生成するには、コマンドターミナルで次のコマンドを入力します。
quarkus create && cd code-with-quarkus
quarkus create && cd code-with-quarkusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記'app' サブコマンド (例:
quarkus create app)を指定することもできます。ただし、'app' サブコマンドが指定されていない場合は暗黙的に指定されるため、必須ではありません。このコマンドを使用すると、Quarkus プロジェクトを現在の作業ディレクトリーの 'code-with-quarkus' というフォルダーに作成します。
デフォルトでは、
groupId属性、artifactId属性、version属性は次のデフォルト値に指定されます。- groupId='org.acme'
- artifactId='code-with-quarkus'
version='1.0.0-SNAPSHOT'
groupId、artifactId、およびversion属性の値を変更するには、quarkus createコマンドを発行し、CLI で次の構文を指定します。groupId:artifactId:versionたとえば
quarkus create app mygroupId:myartifactid:versionです。
注記使用可能なすべての Quarkus コマンドに関する情報を表示するには、
helpパラメーターを指定します。quarkus --help
quarkus --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow テキストエディターで
src/main/java/org/acme/GreetingResource.javaファイルを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このファイルには、
/helloエンドポイントに送信したリクエストに対するレスポンスとして、Hello from Quarkus RESTを返す単純な REST エンドポイントが含まれています。
検証
- 開発モードで、アプリケーションのコンパイルと起動を行います。詳細は、Red Hat build of Quarkus Getting Started プロジェクトのコンパイルおよび起動 を参照してください。
- Quarkus CLI から Getting Started プロジェクトをパッケージ化して実行します。詳細は、Red Hat build of Quarkus Getting Started アプリケーションのパッケージ化および実行 を参照してください。
1.5. Red Hat build of Quarkus Getting Started プロジェクトのコンパイルと起動 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus Getting Started プロジェクトを作成した後、Hello アプリケーションをコンパイルし、hello エンドポイントが "Hello from Quarkus REST を返すことを確認できます。
この手順では Quarkus のビルトイン開発モードを使用するため、アプリケーションの実行中にアプリケーションのソースと設定を更新できます。変更は、実行中のアプリケーションに表示されます。
Quarkus Hello アプリケーションのコンパイルに使用するコマンドは、マシンにインストールした開発者ツールにより異なります。
前提条件
- Quarkus Getting Started プロジェクトを作成している。
手順
- プロジェクトディレクトリーに移動します。
使用する開発者ツールに応じて、次のいずれかの方法を使用して、Quarkus
Helloアプリケーションを開発モードでコンパイルします。Apache Maven を使用する場合は、次のコマンドを入力します。
mvn quarkus:dev
mvn quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus コマンドラインインターフェイス (CLI) を使用する場合は、次のコマンドを入力します。
quarkus dev
quarkus devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven ラッパーを使用する場合は、次のコマンドを入力します。
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力
次の抜粋は、予想される出力の例を示しています。
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, rest, smallrye-context-propagation, vertx]
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, rest, smallrye-context-propagation, vertx]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
アプリケーションが提供するエンドポイントにリクエストを送信するには、新しいターミナルウィンドウに次のコマンドを入力します。
curl -w "\n" http://localhost:8080/hello Hello from Quarkus REST
curl -w "\n" http://localhost:8080/hello Hello from Quarkus RESTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記"\n"属性は、コマンドの出力の前に新しい行を自動的に追加します。これにより、ターミナルが '%' 文字を出力したり、結果と次のシェルプロンプトの両方を同じ行に配置したりすることがなくなります。
1.6. Red Hat build of Quarkus 依存性注入の使用 リンクのコピーリンクがクリップボードにコピーされました!
依存性注入を使用すると、クライアントの消費から完全に独立した方法でサービスを使用できます。クライアントの依存関係の作成がクライアントの動作から分離されるため、プログラム設計を疎結合にできます。
Red Hat build of Quarkus での依存性の注入は、Quarkus アーキテクチャーに合わせて調整された、コンテキストと依存性注入 (CDI) をベースとするビルドタイム指向の依存性注入ソリューションです。ArC は quarkus-rest の推移的な依存関係であり、quarkus-rest はプロジェクトの依存関係であるため、ArC はすでにダウンロードされています。
前提条件
- Quarkus Getting Started プロジェクトを作成している。
手順
アプリケーションを変更し、コンパニオン Bean を追加するには、以下の内容で
src/main/java/org/acme/quickstart/GreetingService.javaファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow src/main/java/org/acme/quickstart/GreetingResource.javaを編集してGreetingServiceを注入し、これを使用して新しいエンドポイントを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを停止した場合は、次のコマンドのいずれかを入力して再起動します。
Apache Maven を場合:
mvn quarkus:dev
mvn quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus CLI を使用する場合:
quarkus dev
quarkus devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven ラッパーを使用:
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
エンドポイントが
hello quarkusを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。curl -w "\n" http://localhost:8080/hello/greeting/quarkus hello quarkus
curl -w "\n" http://localhost:8080/hello/greeting/quarkus hello quarkusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. Red Hat build of Quarkus アプリケーションのテスト リンクのコピーリンクがクリップボードにコピーされました!
Quarkus Getting Started プロジェクトをコンパイルした後、JUnit 5 フレームワークを使用してアプリケーションをテストすることで、それが期待通りに実行するか確認できます。
Quarkus アプリケーションの継続的なテストを有効にすることもできます。詳細は、継続的なテストの有効化と実行 を参照してください。
Quarkus プロジェクトは、pom.xml ファイルに次の 2 つのテスト依存関係を生成します。
-
quarkus-junit5: JUnit 5 テストフレームワークを制御する@QuarkusTestアノテーションを提供するため、テストに必要です。 -
rest-assured:rest-assured依存関係は必須ではありませんが、HTTP エンドポイントをテストする便利な方法として使用できるため、統合されています。rest-assured依存関係により正しい URL が自動的に設定されるため、設定は必要ありません。
サンプル pom.xml ファイル:
これらのテストは REST-Assured フレームワークを使用しますが、必要に応じて別のライブラリーも使用できます。
前提条件
- Quarkus Getting Started プロジェクトをコンパイルしている。詳細は、Red Hat build of Quarkus Getting Started プロジェクトのコンパイルと起動 を参照してください。
手順
生成された
pom.xmlファイルを開き、コンテンツを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のプロパティーの値に注意してください。
-
アプリケーションがテストで必ず正しいログマネージャーを使用するように、
java.util.logging.managerシステムプロパティーが設定されます。 -
maven.homeプロパティーは、プロジェクトに適用するカスタム Maven 設定を保存できるsettings.xmlファイルの場所を参照します。
-
アプリケーションがテストで必ず正しいログマネージャーを使用するように、
src/test/java/org/acme/quickstart/GreetingResourceTest.javaファイルを以下の内容に一致するように編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記QuarkusTestランナーを使用することで、テストを開始する前に JUnit にアプリケーションを起動するよう指示します。次のいずれかの方法でテストを実行します。
Apache Maven を場合:
mvn test
mvn testCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus CLI を使用:
quarkus test
quarkus testCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven ラッパーを使用:
./mvnw test
./mvnw testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IDE からテストを実行することもできます。その場合は、まずアプリケーションを停止してください。
デフォルトでは、テストはポート
8081で実行されるため、実行中のアプリケーションと競合しません。Quarkus では、RestAssured依存関係はこのポートを使用するように設定されています。注記別のクライアントを使用する場合は、
@TestHTTPResourceアノテーションを使用して、テスト済みアプリケーションの URL をTestクラスのフィールドに直接注入します。このフィールドには、String、URL、またはURIの型を使用できます。@TestHTTPResourceアノテーションにテストパスを入力することもできます。たとえば、/fooに公開されているリソースをテストするには、テストに次の行を追加します。@TestHTTPResource("/foo") URL testUrl;@TestHTTPResource("/foo") URL testUrl;Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
必要な場合は、
quarkus.http.test-port設定プロパティーにテストポートを指定します。
1.8. 継続的テストの有効化と実行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus を使用すると、アプリケーションの開発中にコードの変更を継続的にテストできます。Quarkus には、コードに変更を加えて保存した直後に実行できる継続的テスト機能があります。
継続的テストを実行すると、アプリケーションの起動後にテストが一時停止されます。アプリケーションの起動後、すぐにテストを再開できます。Quarkus アプリケーションは、実行するテストを決定します。これにより、変更されたコードに対してのみテストが実行されます。
Quarkus の継続的テスト機能は、デフォルトで有効になっています。src/main/resources/application.properties ファイルの quarkus.test.continuous-testing プロパティーを disabled に設定することで、継続的テストを無効にできます。
以前に継続的テストを無効にしており、再度有効にしたい場合は、テストを開始する前に Quarkus アプリケーションを再起動する必要があります。
前提条件
- Quarkus Getting Started アプリケーション (またはその他のアプリケーション) をコンパイルしちえる。詳細は、Red Hat build of Quarkus Getting Started プロジェクトのコンパイルおよび起動 を参照してください。
手順
Quarkus アプリケーションを起動します。
code.quarkus.redhat.com アプリケーションまたは Quarkus CLI を使用して Getting Started プロジェクトを作成した場合、プロジェクトの生成時に Maven ラッパーが提供されます。プロジェクトディレクトリーから次のコマンドを入力します。
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow マシンにインストールされている Apache Maven を使用して Getting Started プロジェクトを作成した場合、次のコマンドを入力します。
mvn quarkus:dev
mvn quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 開発モードで継続的テストを実行しており、Quarkus CLI を使用している場合は、次のコマンドを入力します。
quarkus dev
quarkus devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
生成された出力ログで、テストステータスの詳細を表示します。
注記出力ログを表示するには、画面の一番下までスクロールする必要がある場合があります。
継続的テストが有効になっている場合、次のメッセージが表示されます。
Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 継続的テストが一時停止されると、次のメッセージが表示されます。
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、継続的テストが有効になっている場合、アプリケーションの起動後にテストが一時停止されます。テストの実行方法を制御するために使用できるキーボードコマンドを表示するには、継続的テストの制御コマンド を参照してください。
-
テストの実行を開始するには、キーボードの
rを押します。 更新された出力ログを表示して、テストステータスとテスト結果の監視、およびテストの統計情報の確認を行い、フォローアップアクションのガイダンスを取得します。以下に例を示します。
All 2 tests are passing (0 skipped), 2 tests were run in 2094ms. Tests completed at 14:45:11. Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
All 2 tests are passing (0 skipped), 2 tests were run in 2094ms. Tests completed at 14:45:11. Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
コードを変更します。たとえばテキストエディターで、
src/main/java/org/acme/quickstart/GreetingsResource.javaファイルを開きます。 "Hello world" を返すように "hello" エンドポイントを変更し、ファイルを保存します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Quarkus がすぐにテストを再実行して、変更後のコードをテストすることを確認します。
出力ログを表示してテスト結果を確認します。この例のテストでは、変更後の文字列に "Hello from Quarkus REST" という値が含まれているかどうかが確認されます。文字列が "Hello world" に変更されているため、テストは失敗します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
継続的テストを終了するには、キーボードの
Ctrl-Cまたはqを押します。
値を再度 "Hello from Quarkus REST" に戻すと、テストが自動的に再度実行されます。
1.8.1. 継続的テストの制御コマンド リンクのコピーリンクがクリップボードにコピーされました!
キーボードのホットキーコマンドを使用して、継続的テストのオプションを制御できます。コマンドの完全なリストを表示するには、キーボードの 'h' を押します。以下のオプションを設定できます。
| コマンド | 説明 |
|---|---|
| r | すべてのテストを再実行します。 |
| f | 失敗したすべてのテストを再実行します。 |
| b | 'broken only' モードに切り替えます。他のテストもコード変更の影響を受ける場合でも、以前に失敗したテストのみが実行されます。このオプションは、多くのテストで使用されるコードを変更するが、失敗したテストのみを確認したい場合に便利です。 |
| v | 最後のテスト実行からのテスト失敗の詳細をコンソールに出力します。このオプションは、最後のテスト実行以降に大量のコンソール出力があった場合に便利です。 |
| p | 実行中のテストを一時的に停止します。これは、多くのコード変更を行っているが、変更が完了するまでテストのフィードバックを取得したくない場合に便利です。 |
| q | 継続的テストを終了します。 |
| o | テスト出力をコンソールに出力します。これはデフォルトで無効にされます。テスト出力が無効になっている場合、出力はフィルタリングされて保存されますが、コンソールには表示されません。テスト出力は Dev UI で表示できます。 |
| i | インストルメンテーションベースのリロードを切り替えます。このオプションを使用してもテストに直接的な影響はありませんが、ライブリロードが可能になります。これは、変更がクラスの構造に影響を与えない場合に再起動を回避するために役立ちます。 |
| l | ライブリロードを切り替えます。このオプションを使用してもテストには直接影響しませんが、ライブリロードをオン/オフにすることができます。 |
| s | 強制的に再起動します。このオプションを使用すると、変更されたファイルのスキャンと変更を含むライブリロードを強制できます。コードに変更がなく、ライブリロードが無効になっている場合でも、アプリケーションが再起動されることに注意してください。 |
1.9. Red Hat build of Quarkus Getting Started アプリケーションのパッケージ化と実行 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus Getting Started プロジェクトをコンパイルしたら、JAR ファイルでパッケージ化し、コマンドラインから実行できます。
Quarkus Getting Started アプリケーションをパッケージ化して実行するために使用するコマンドは、マシンにインストールされている開発者ツールにより異なります。
前提条件
- Quarkus Getting Started プロジェクトをコンパイルしている。
手順
-
getting-startedプロジェクトディレクトリーに移動します。 Quarkus Getting Started プロジェクトをパッケージ化するには、使用する開発者ツールに応じて、次のいずれかの方法を使用します。
Apache Maven を使用する場合:
mvn package
mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus CLI を使用する場合:
quarkus build
quarkus buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven ラッパーを使用する場合:
./mvnw package
./mvnw packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、以下の JAR ファイルを
/targetディレクトリーに生成します。-
getting-started-1.0-0-SNAPSHOT.jar: プロジェクトのクラスおよびリソースが含まれます。これは、Maven ビルドで生成される通常のアーティファクトです。 -
quarkus-app/quarkus-run.jar: 実行可能な JAR ファイルです。このファイルは uber-JAR ファイルではありません。依存関係はtarget/quarkus-app/libディレクトリーにコピーされます。
-
以下のコマンドを入力してアプリケーションを起動します。
java -jar target/quarkus-app/quarkus-run.jar
java -jar target/quarkus-app/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記- アプリケーションを実行する前に、必ず開発モードを停止してください (CTRL+C キーを押します)。停止しない場合、ポートの競合が発生します。
-
quarkus-run.jarファイルのMANIFEST.MFファイルのClass-Pathエントリーには、libディレクトリーの JAR ファイルが明示的にリストされます。アプリケーションを別の場所からデプロイする場合は、quarkus-appディレクトリー全体をデプロイする必要があります。
Red Hat build of Quarkus の各種エクステンションは、アプリケーションに関するさまざまな情報を提供する非アプリケーションエンドポイントを提供します。たとえば、quarkus-smallrye-health、quarkus-micrometer-registry-prometheus、quarkus-smallrye-openapi エクステンションなどです。
/q 接頭辞を指定すると、これらの非アプリケーションエンドポイントにアクセスできます。たとえば、/q/health、/q/metrics、/q/openapi などです。
セキュリティーリスクを引き起こす可能性がある非アプリケーションエンドポイントの場合、専用の管理インターフェイスを使用して、それらのエンドポイントを別の TCP ポートで公開することも可能です。詳細は、Quarkus の Management interface reference ガイドを参照してください。
1.10. JVM とネイティブビルドモード リンクのコピーリンクがクリップボードにコピーされました!
従来の Java 仮想マシン (JVM) アプリケーションをコンパイルすることも、Mandrel または GraalVM の native-image ツールを使用してネイティブアプリケーションをコンパイルすることもできます。
1.10.1. アプリケーションを従来の JVM アプリケーションとしてコンパイルする リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを、JVM アプリケーションとしてコンパイルできます。この方式は quarkus.package.jar.type 設定プロパティーに基づいています。生成する JAR ファイルフォーマットを指定するには、このプロパティーを設定します。
-
fast-jar: Quarkus およびデフォルトの設定オプション用に最適化された JAR ファイル。その結果、起動時間がわずかに短縮され、メモリー使用量がわずかに減少します。 -
legacy-jar: 典型的な JAR ファイル。このファイルは非推奨であり、推奨されるオプションではありません。 -
mutable-jar: ネイティブイメージコンテナーのビルドに使用される JAR ファイル。 uber-jar: 単一のスタンドアロン JAR ファイル。これらのファイルはすべてのオペレーティングシステムで動作し、ネイティブイメージよりもはるかに短時間でビルドされます。
1.10.2. アプリケーションをネイティブイメージにコンパイルする リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを JVM アプリケーションとしてコンパイルするのではなく、ネイティブ実行可能ファイルにアプリケーションをコンパイルできます。
quarkus.native.enabled を true に設定することで、ネイティブモードを有効にできます。
これを行うことで、Windows の .exe ファイルなど、選択したオペレーティングシステム専用にコンパイルされた実行可能なバイナリーファイルが作成されます。これらのファイルは JAVA JAR ファイルよりも起動時間が短く、RAM 消費量も少なくなりますが、コンパイルには数分かかります。さらに、プロファイルに基づく最適化が欠落しているため、ネイティブバイナリーを使用して達成できる最大スループットは、通常の JVM アプリケーションよりも低くなります。
ネイティブイメージは主に 2 つの方法でビルドできます。
- Mandrel の使用 (Linux コンテナー環境の推奨オプション)
- GraalVM (Oracle ディストリビューション) の使用
Mandrel を使用する
Mandrel は、Red Hat ビルドの Quarkus 向けの GraalVM の特殊なディストリビューションであり、Linux コンテナー環境用のネイティブ実行可能ファイルをビルドするのに推奨される方法です。
このアプローチは通常、Docker または Podman を使用したコンテナー内で使用されます。
Mandrel アプローチは、コンテナー化された環境にコンパイル出力を埋め込むのに最適ですが、Linux64 ビットのネイティブ実行可能ファイルしか提供されません。したがって、.exe などの結果はオプションではありません。
Mandrel ユーザーは、ネイティブ実行可能ファイルのビルドにコンテナーを使用することが推奨されます。
アプリケーションをネイティブモードでコンパイルするには、以下のプロパティーで /mvnw package -Dnative コマンドを入力します。
Maven を使用する場合:
ローカルビルド:
./mvnw package -Dnative -Dquarkus.native.enabled=true
./mvnw package -Dnative -Dquarkus.native.enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus は、ローカルにインストールされた
native-imageが GRAALVM_HOME、JAVA_HOME、またはシステム PATH の場所にあるかどうかを検出しようとします。Quarkus は、ローカルにインストールされた native-image を使用して、オペレーティングシステムのネイティブバイナリーにアプリケーションをコンパイルします。何も存在せず、コンテナーのビルドモードが有効になっている場合には、Quarkus は代わりに Mandrel コンテナーイメージを使用します。Docker を使用する場合:
Mandrel ビルダーイメージを明示的に使用するには、以下を実行します。
./mvnw package -Dnative -Dquarkus.native.container-build=true
./mvnw package -Dnative -Dquarkus.native.container-build=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の Mandrel イメージを使用するように Quarkus に指示するには、以下を実行します。
./mvnw package -Dnative -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1
./mvnw package -Dnative -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Podman を使用する場合 (オプション):
Red Hat build of Quarkus はコンテナーのランタイムを自動的に検出します。特定のコンテナーランタイムの使用を強制する場合は、手動で指定します。
./mvnw package -Dnative -Dquarkus.native.enabled=true -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
./mvnw package -Dnative -Dquarkus.native.enabled=true -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow ./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow ./mvnw package -Dnative -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1 Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
./mvnw package -Dnative -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1 Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 手順を実行した結果
これらのコマンドを実行すると、
targetディレクトリーに*-runnerバイナリーが作成されます。その場合は、以下が適用されます。-
*-runnerファイルは、Quarkus が生成するビルドされたネイティブバイナリーです。 -
targetディレクトリーは、Maven アプリケーションをビルドするときに Maven が作成するディレクトリーです。
-
GraalVM を使用する
Mandrel は macOS をサポートしていないため、Oracle GraalVM を使用してこのオペレーティングシステム上でネイティブ実行可能ファイルをビルドできます。
ベアメタル Linux または Windows ディストリビューション上で Oracle GraalVM を直接使用して、ネイティブ実行可能ファイルをビルドすることもできます。
Oracle GraalVM を使用してネイティブ実行可能ファイルをビルドする方法の詳細は、ネイティブ実行可能ファイルへの Red Hat build of Quarkus アプリケーションのコンパイル を参照してください。
1.11. Red Hat build of Quarkus Getting Started アプリケーションをネイティブモードでパッケージ化および実行する リンクのコピーリンクがクリップボードにコピーされました!
ネイティブモードでは、アプリケーションビルドからの出力は、圧縮またはアーカイブ JAR ファイルではなく、プラットフォームに依存するネイティブバイナリーファイルになります。ネイティブモードと Java 仮想マシン (JVM) の違いの詳細は、JVM とネイティブビルドモード を参照してください。
前提条件
-
OpenJDK 17 または 21 がインストールされており、
JAVA_HOME環境変数を設定して Java SDK の場所を指定している。 - Apache Maven 3.9.9 をインストールした。
- 動作する C 開発環境 がある。
- Docker や Podman などの動作するコンテナーランタイムがある。
オプション: Quarkus コマンドラインインターフェイス (CLI) を使用する場合は、それがインストールされていることを確認してください。
- Quarkus CLI のインストール方法は、Quarkus CLI で該当するコミュニティー情報を参照してください。
- Quarkus Getting Started プロジェクト のクローンを作成してコンパイルした。
GraalVM のコミュニティーエディションまたはエンタープライズエディションをダウンロードしてインストールした。
- GraalVM のコミュニティーエディションまたはエンタープライズエディションをダウンロードおよびインストールするには、公式の Getting Started with GraalVM ドキュメントを参照してください。
- もしくは、sdkman、homebrew、scoop などの、プラットフォーム固有のインストールツールを使用します。
GraalVM のコミュニティーエディションを使用して Getting Started ガイドのすべての手順を完了できますが、GraalVM のコミュニティーエディションは Red Hat build of Quarkus の実稼働環境ではサポートされません。詳細は、Red Hat build of Quarkus アプリケーションのネイティブ実行可能ファイルへのコンパイル を参照してください。
手順
ランタイム環境を設定するために、
GRAALVM_HOME環境変数を GraalVM インストールディレクトリーに設定します。以下に例を示します。export GRAALVM_HOME=$HOME/Development/graalvm/
export GRAALVM_HOME=$HOME/Development/graalvm/Copy to Clipboard Copied! Toggle word wrap Toggle overflow macOS の場合は、変数を
Homeサブディレクトリーに設定します。export GRAALVM_HOME=$HOME/Development/graalvm/Contents/Home/
export GRAALVM_HOME=$HOME/Development/graalvm/Contents/Home/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Windows Server の場合は、コントロールパネルを使用して環境変数を設定します。
native-imageツールをインストールします。${GRAALVM_HOME}/bin/gu install native-image${GRAALVM_HOME}/bin/gu install native-imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow JAVA_HOME環境変数を GraalVM インストールディレクトリーに設定します。export JAVA_HOME=${GRAALVM_HOME}export JAVA_HOME=${GRAALVM_HOME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow GraalVM
binディレクトリーをパスに追加します。export PATH=${GRAALVM_HOME}/bin:$PATHexport PATH=${GRAALVM_HOME}/bin:$PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow Getting Started プロジェクトフォルダーに移動します。
cd getting-started
cd getting-startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のいずれかの方法で、ネイティブイメージをコンパイルします。
Maven を使用する場合:
mvn clean package -Pnative
mvn clean package -PnativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus CLI を使用する場合:
quarkus build --native
quarkus build --nativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven ラッパーを使用:
./mvnw clean package -Pnative
./mvnw clean package -PnativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
アプリケーションを起動します。
./target/getting-started-1.0.0-SNAPSHOT-runner
./target/getting-started-1.0.0-SNAPSHOT-runnerCopy to Clipboard Copied! Toggle word wrap Toggle overflow ログメッセージを観察し、
nativeという単語が含まれていることを確認します。2025-09-25 08:35:51,505 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT native (powered by Quarkus 3.27.0.redhat-00001) started in 0.043s. Listening on: http://0.0.0.0:8080
2025-09-25 08:35:51,505 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT native (powered by Quarkus 3.27.0.redhat-00001) started in 0.043s. Listening on: http://0.0.0.0:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow
追加のヒントやトラブルシューティング情報は、Quarkus の Building a native executable ガイドを参照してください。