Apache Maven を使用した Red Hat build of Quarkus アプリケーションの開発とコンパイル


Red Hat build of Quarkus 3.15

Red Hat Customer Content Services

概要

このガイドでは、Apache Maven ツールを使用して Red Hat build of Quarkus アプリケーションを開発およびコンパイルする方法を説明します。

Red Hat build of Quarkus ドキュメントへのフィードバックの提供

エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. 次のリンクをクリックして チケットを作成します
  2. Summary に課題の簡単な説明を入力します。
  3. Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
  4. Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。

第1章 Apache Maven を使用した Red Hat build of Quarkus アプリケーションの開発とコンパイル

アプリケーション開発者は、Red Hat build of Quarkus を使用して、OpenShift Container Platform 環境およびサーバーレス環境で実行される、Java で書かれたマイクロサービスベースのアプリケーションを作成できます。ネイティブ実行可能ファイルにコンパイルされたアプリケーションは、メモリーのフットプリントが小さく、起動時間は高速です。

Quarkus Apache Maven プラグインを使用して、Red Hat build of Quarkus プロジェクトを作成します。

注記

該当する場合は、Quarkus コマンドラインインターフェイス (CLI) を使用する代替手順を示しています。Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

前提条件

  • OpenJDK 17 または 21 がインストールされている。

  • JAVA_HOME 環境変数を設定して Java SDK の場所を指定している。
  • Apache Maven 3.8.6 以降がインストールされている。

    • Maven をダウンロードするには、Apache Maven Project の Web サイトにアクセスしてください。

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 build of Quarkus の違いは、Quarkus コミュニティーバージョンと Red Hat build of Quarkus の違い を参照してください。

1.2. Apache Maven と Red Hat build of Quarkus

Apache Maven は分散型構築自動化ツールで、Java アプリケーション開発でソフトウェアプロジェクトの作成、ビルド、管理に使用されます。

Apache Maven の詳細は、Apache Maven のドキュメントを参照してください。

Maven リポジトリー

Maven リポジトリーには、Java ライブラリー、プラグイン、およびその他のビルドアーティファクトが格納されます。デフォルトのパブリックリポジトリーは Maven 2 Central Repository ですが、複数の開発チームの間で共通のアーティファクトを共有する目的で、社内のプライベートおよび内部リポジトリーとすることが可能です。また、サードパーティーのリポジトリーも利用できます。

Quarkus プロジェクトでは、Red Hat が提供する Maven リポジトリーを使用するか、Red Hat build of Quarkus の Maven リポジトリーをダウンロードできます。

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.1. オンラインリポジトリーの Maven の settings.xml ファイルを設定する

Red Hat がホストする Quarkus リポジトリーを Quarkus Maven プロジェクトで使用するには、ユーザー用に settings.xml ファイルを設定します。リポジトリーマネージャーまたは共有サーバー上のリポジトリーで使用される Maven 設定により、プロジェクトの制御と管理が向上します。

注記

Maven の settings.xml ファイルを変更してリポジトリーを設定する場合、変更はすべての Maven プロジェクトに適用されます。設定を特定のプロジェクトにのみ適用する場合は、-s オプションを使用して、プロジェクト固有の settings.xml ファイルへのパスを指定します。

手順

  1. テキストエディターまたは統合開発環境 (IDE) で、Maven $HOME/.m2/settings.xml ファイルを開きます。

    注記

    $HOME/.m2/ ディレクトリーに settings.xml ファイルが存在しない場合は、$MAVEN_HOME/conf/ ディレクトリーから $HOME/.m2/ ディレクトリーに settings.xml ファイルをコピーします。

  2. 以下の行を settings.xml ファイルの <profiles> 要素に追加します。

    <!-- Configure the Red Hat build of Quarkus Maven repository -->
    <profile>
      <id>red-hat-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    Copy to Clipboard Toggle word wrap
  3. 以下の行を settings.xml ファイルの <activeProfiles> 要素に追加し、ファイルを保存します。

    <activeProfile>red-hat-enterprise-maven-repository</activeProfile>
    Copy to Clipboard Toggle word wrap

1.3. コマンドラインで Red Hat build of Quarkus プロジェクトを作成する

コマンドラインで Red Hat build of Quarkus Maven プラグインを使用し、コマンドラインで属性および値を指定するか、インタラクティブモードでプラグインを使用して、Quarkus プロジェクトを作成できます。Quarkus コマンドラインインターフェイス (CLI) を使用して Quarkus プロジェクトを作成することもできます。作成されたプロジェクトには次の要素が含まれます。

  • Maven の構造
  • 関連するユニットテスト
  • アプリケーションの起動後に http://localhost:8080 でアクセス可能なランディングページ
  • src/main/docker の JVM およびネイティブモードの Dockerfile ファイルの例
  • アプリケーションの設定ファイル

前提条件

  • OpenJDK 17 または 21 がインストールされている。

  • JAVA_HOME 環境変数を設定して Java SDK の場所を指定している。
  • Apache Maven 3.8.6 以降がインストールされている。

    • Maven をダウンロードするには、Apache Maven Project の Web サイトにアクセスしてください。
  • オプション: Quarkus コマンドラインインターフェイス (CLI) がインストールされている。これは、Quarkus プロジェクトを作成する方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. コマンドターミナルで以下のコマンドを入力して、Maven が OpenJDK 17 または 21 を使用していること、および Maven のバージョンが 3.8.6 以降であることを確認します。

    mvn --version
    Copy to Clipboard Toggle word wrap
  2. 前のコマンドで OpenJDK 17 または 21 が返されない場合は、OpenJDK 17 または 21 へのパスを PATH 環境変数に追加し、前のコマンドを再度入力します。
  3. プロジェクトを作成するには、次のいずれかの方法を使用します。

    • Quarkus Maven プラグインを使用します。以下のコマンドを実行します。

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.7.redhat-00001:create \
          -DprojectGroupId=<project_group_id> \
          -DprojectArtifactId=<project_artifact_id> \
          -DplatformGroupId=com.redhat.quarkus.platform \
          -DplatformArtifactId=quarkus-bom \
          -DplatformVersion=3.15.7.redhat-00001
          -DpackageName=getting.started
      Copy to Clipboard Toggle word wrap

      このコマンドでは、以下の値を置き換えてください。

      • <project_group_id>: プロジェクトの一意識別子
      • <project_artifact_id>: プロジェクトおよびプロジェクトディレクトリーの名前
    • インタラクティブモードでプロジェクトを作成します。

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.7.redhat-00001:create
      Copy to Clipboard Toggle word wrap

      プロンプトが表示されたら、必要な属性値を入力します。

      注記

      次のコマンドを入力し、プロジェクト属性のデフォルト値でプロジェクトを作成することもできます。

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.7.redhat-00001:create -B

    • Quarkus CLI を使用します。以下のコマンドを実行します。

      quarkus create app my-groupId:my-artifactId --package-name=getting.started
      Copy to Clipboard Toggle word wrap
      • 次のコマンドを使用して、利用可能なオプションのリストを取得することもできます。

        quarkus create app --help
        Copy to Clipboard Toggle word wrap
注記

デフォルトでは、Quarkus Maven プラグインは最新の推奨 quarkus-bom バージョンを使用します。quarkus-bom ファイルはエクステンションを集約し、アプリケーションからエクステンションを参照して依存関係バージョンを調整できるようにします。オフラインの場合、Quarkus Maven プラグインは、Maven リポジトリーから最後に更新を取得したときから、quarkus-bom の最新の優先バージョンを使用します。

1.4. pom.xml ファイルを設定して Red Hat build of Quarkus プロジェクトを作成する

Maven の pom.xml ファイルを設定することで、既存の Maven プロジェクトを使用して Quarkus プロジェクトを作成できます。

手順

  1. テキストエディターで pom.xml ファイルを開きます。
  2. 次の項目を含む設定プロパティーを追加します。

    • Maven Compiler プラグインのバージョン
    • Quarkus BOM の groupIDartifactID、および version
    • Maven Surefire プラグインのバージョン
    • skipITs プロパティー
    <properties>
        <compiler-plugin.version>3.11.0</compiler-plugin.version>
        <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
        <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
        <quarkus.platform.version>3.15.7.redhat-00001</quarkus.platform.version>
        <surefire-plugin.version>3.1.2</surefire-plugin.version>
        <skipITs>true</skipITs>
    </properties>
    Copy to Clipboard Toggle word wrap
  3. Quarkus GAV (グループ、アーティファクト、バージョン) を追加し、quarkus-bom ファイルを使用して、さまざまな Quarkus 依存関係のバージョンを省略します。

    <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>${quarkus.platform.artifact-id}</artifactId>
            <version>${quarkus.platform.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
    Copy to Clipboard Toggle word wrap
  4. Quarkus Maven プラグイン、Maven Compiler プラグイン、Maven Surefire プラグインを追加します。

    <build>
        <plugins>
            <plugin>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>quarkus-maven-plugin</artifactId>
                <version>${quarkus.platform.version}</version>
                <extensions>true</extensions>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                            <goal>generate-code</goal>
                            <goal>generate-code-tests</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${compiler-plugin.version}</version>
                <configuration>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire-plugin.version}</version>
                <configuration>
                    <systemPropertyVariables>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <maven.home>${maven.home}</maven.home>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
        </plugins>
    </build>
    Copy to Clipboard Toggle word wrap
    注記

    maven-surefire-plugin は、アプリケーションのユニットテストを実行します。

  5. オプション: ネイティブアプリケーションをビルドするには、maven-failsafe-plugin を含むネイティブプロファイルを追加します。

    <build>
        <plugins>
            ...
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${surefire-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <systemPropertyVariables>
                                <native.image.path>${project.build.directory}/${project.build.finalName}-runner
                                </native.image.path>
                                <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                                <maven.home>${maven.home}</maven.home>
                            </systemPropertyVariables>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ...
    <profiles>
        <profile>
            <id>native</id>
            <activation>
                <property>
                    <name>native</name>
                </property>
            </activation>
            <properties>
                <skipITs>false</skipITs>
                <quarkus.package.type>native</quarkus.package.type>
            </properties>
        </profile>
    </profiles>
    Copy to Clipboard Toggle word wrap
    • 名前に IT が含まれ、@QuarkusIntegrationTest アノテーションを含むテストは、ネイティブ実行可能ファイルに対して実行します。
    • ネイティブモードと Java 仮想マシン (JVM) モードの違いの詳細は、「Red Hat build of Quarkus の使用開始」ガイドの JVM およびネイティブビルドモード を参照してください。

1.5. 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 アプリケーションを作成するには、Red Hat がホストする Quarkus リポジトリーを使用します。詳細は、オンラインリポジトリーの Maven の settings.xml ファイルを設定する を参照してください。
  • オプション: Quarkus コマンドラインインターフェイス CLI がインストールされている。これは、Quarkus を開発モードで起動する方法の 1 つとして使用できます。

    詳細は、Quarkus CLI のインストール を参照してください。

注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. Web ブラウザーで、https://code.quarkus.redhat.com に移動します。
  2. 利用可能なバージョンのリストから、必要な Red Hat build of Quarkus のバージョンを選択します。

    注記

    code.quarkus.redhat.com アプリケーションは、自動的に Red Hat build of Quarkus の最新リリースを使用します。これは優先されるオプションです。ただし、必要に応じて、プロジェクト生成後に pom.xml ファイル内の以前の BOM バージョンに手動で変更することもできますが、これは推奨されません。

  3. プロジェクトの基本情報を指定します。

    1. プロジェクトのグループ名を入力します。名前の形式は、Java パッケージ命名規則に従います (例: org.acme)。
    2. プロジェクトによって生成される Maven アーティファクトの名前 (code-with-quarkus など) を入力します。
    3. アプリケーションのコンパイルおよび起動に使用するビルドツールを選択します。選択したビルドツールにより、次の設定が決まります。

      • 生成されるプロジェクトのディレクトリー構造
      • 生成したプロジェクトで使用される設定ファイルのフォーマット
      • プロジェクトの生成後に code.quarkus.redhat.com に表示される、アプリケーションのコンパイルと起動のためのカスタムビルドスクリプトおよびコマンド

        注記

        Red Hat は、Quarkus Maven プロジェクトを作成する場合にのみ code.quarkus.redhat.com の使用をサポートします。

  4. アプリケーションプロジェクトに関する追加情報を指定します。

    1. アプリケーションの詳細を含むフィールドを表示するには、More options を選択します。

    2. プロジェクトによって生成されたアーティファクトに使用するバージョンを入力します。このフィールドのデフォルト値は 1.0.0-SNAPSHOT です。semantic versioning の使用が推奨されます。ただし、別のタイプのバージョン管理を指定することもできます。
    3. code.quarkus.redhat.com がスターターコードをプロジェクトに追加するかどうかを選択します。"STARTER-CODE" でマークされたエクステンションをプロジェクトに追加する場合、このオプションを有効にして、プロジェクト生成時にそのエクステンションのサンプルクラスとリソースファイルを自動的に作成できます。ただし、サンプルコードを提供するエクステンションを追加しない場合、このオプションは生成されたプロジェクトには影響しません。

    image::additional-app-details-project-generator.png[code.quarkus.redhat.com サイトのアプリケーション詳細セクションのスクリーンショット。追加のアプリケーションの詳細を含む展開されたフォームが表示されています。]

  5. 使用するエクステンションを選択します。Quarkus アプリケーションには、依存関係として選択したエクステンションが含まれます。Quarkus プラットフォームにより、これらのエクステンションは今後のバージョンとの互換性も確保されます。

    重要

    同じプロジェクトで RESTEasyQuarkus REST 拡張機能を使用しないでください。どちらも同様の機能を提供しますが、動作方法は非常に異なります。Quarkus REST の使用が推奨されます。

    エクステンションの横にある quark アイコン ( quark ) は、そのエクステンションが Red Hat build of Quarkus プラットフォームリリースの一部であることを示します。Red Hat は、同じプラットフォームのエクステンションを使用することを推奨します。これは、エクステンションは一緒にテストおよび検証され、使用とアップグレードが容易になるためです。

    "STARTER-CODE" でマークされたエクステンションのスターターコードを自動生成するオプションを有効にできます。

    Screenshot of the list of extensions at the code.quarkus.redhat.com site that you can add to your project

  6. 選択を確認するには、Generate your application を選択します。表示されるダイアログボックスには、次の項目が表示されます。

    • 生成されたプロジェクトを含むアーカイブをダウンロードするためのリンク
    • アプリケーションをコンパイルして起動するために使用できるコマンド
  7. 生成されたプロジェクトファイルを含むアーカイブをマシンに保存するには、Download the ZIP を選択します。
  8. アーカイブの内容をデプロイメントします。
  9. 展開したプロジェクトファイルが含まれるディレクトリーに移動します。

    cd <directory_name>
    Copy to Clipboard Toggle word wrap
  10. 次のいずれかの方法でアプリケーションを開発モードでコンパイルして起動します。

    • Maven を使用する場合:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用:

      quarkus dev
      Copy to Clipboard Toggle word wrap

1.6. Java コンパイラーを設定する

デフォルトでは、Quarkus Maven プラグインはコンパイラーフラグを maven-compiler-plugin から javac コマンドに渡します。

手順

  • 開発モードで使用されるコンパイラーフラグをカスタマイズするには、configuration セクションを plugin ブロックに追加し、compilerArgs プロパティーを設定します。sourcetargetjvmArgs を設定することもできます。たとえば、Java 仮想マシン (JVM) および javac コマンドに -verbose を渡すには、次の設定を追加します。

    <plugin>
      <groupId>com.redhat.quarkus.platform</groupId>
      <artifactId>quarkus-maven-plugin</artifactId>
      <version>${quarkus.platform.version}</version>
    
      <configuration>
        <source>${maven.compiler.source}</source>
        <target>${maven.compiler.target}</target>
        <compilerArgs>
          <arg>-verbose</arg>
        </compilerArgs>
        <jvmArgs>-verbose</jvmArgs>
      </configuration>
    
      ...
    </plugin>
    Copy to Clipboard Toggle word wrap

1.7. エクステンションのインストールと管理

Red Hat build of Quarkus では、エクステンションを使用してアプリケーションの機能を拡張し、フレームワークを設定および起動してアプリケーションに統合できます。この手順では、エクステンションを検索して Quarkus プロジェクトに追加する方法を説明します。

前提条件

  • Quarkus Maven プロジェクトを作成している。
  • オプション: Quarkus コマンドラインインターフェイス (CLI) がインストールされている。これは、Quarkus エクステンションを管理する方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. Quarkus プロジェクトディレクトリーに移動します。
  2. 次のいずれかの方法で、使用可能なすべてのエクステンションをリスト表示します。

    • Maven を使用する場合:

      ./mvnw quarkus:list-extensions
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus extension --installable
      Copy to Clipboard Toggle word wrap
  3. 次のいずれかの方法を使用して、プロジェクトにエクステンションを追加します。

    • Maven を使用して、次のコマンドを入力します。この場合の <extension> は、追加するエクステンションのグループ、アーティファクト、バージョン (GAV) です。

      ./mvnw quarkus:add-extension -Dextensions="<extension>"
      Copy to Clipboard Toggle word wrap

      たとえば、Agroal エクステンションを追加するには、以下のコマンドを入力します。

      ./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-agroal"
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用して、次のコマンドを入力します。この場合の <extension> は、追加するエクステンションのグループ、アーティファクト、バージョン (GAV) です。

      quarkus extension add '<extension>'
      Copy to Clipboard Toggle word wrap
  4. 特定のエクステンションを検索するには、-Dextensions= の後にエクステンション名または名前の一部を入力します。以下の例では、名前に agroal のテキストが含まれるエクステンションを検索します。

    ./mvnw quarkus:add-extension -Dextensions=agroal
    Copy to Clipboard Toggle word wrap

    このコマンドは、以下の結果を返します。

    [SUCCESS] ✅  Extension io.quarkus:quarkus-agroal has been installed
    Copy to Clipboard Toggle word wrap

    同様に、Quarkus CLI では次のように入力できます。

    quarkus extension add 'agroal'
    Copy to Clipboard Toggle word wrap

1.8. プロジェクトを IDE にインポートする

Red Hat build of Quarkus プロジェクトはテキストエディターで開発できますが、統合開発環境 (IDE) を使用する方が簡単な場合があります。以下では、プロジェクトを特定の IDE にインポートする手順を説明しています。

前提条件

  • Quarkus Maven プロジェクトがある。
  • オプション: Quarkus コマンドラインインターフェイス (CLI) がインストールされいる。これは、プロジェクトを開発モードで開始するために使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

IDE に関連する手順を選択します。

CodeReady Studio または Eclipse

  1. CodeReady Studio または Eclipse で、File> Import をクリックします。
  2. MavenExisting Maven Project を選択します。
  3. 次に、プロジェクトのルートの場所を選択します。利用可能なモジュールがリストされます。
  4. 生成されたプロジェクトを選択し、Finish をクリックします。
  5. 次のいずれかの方法でアプリケーションをコンパイルして起動します。

    • Maven を使用する場合:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus dev
      Copy to Clipboard Toggle word wrap

IntelliJ

  1. IntelliJ で、以下のタスクのいずれかを実行します。

    • File > New > Project From Existing Sources を選択します。
    • Welcome ページで Import project を選択します。
  2. プロジェクトのルートディレクトリーを選択します。
  3. Import project from external model を選択し、次に Maven を選択します。
  4. オプションを確認して Next をクリックします。
  5. Create をクリックします。
  6. 次のいずれかの方法でアプリケーションをコンパイルして起動します。

    • Maven を使用する場合:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus dev
      Copy to Clipboard Toggle word wrap

Apache NetBeans

  1. File > Open Project を選択します。
  2. プロジェクトの root ディレクトリーを選択します。
  3. Open Project クリックします。
  4. 次のいずれかの方法でアプリケーションをコンパイルして起動します。

    • Maven を使用する場合:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus dev
      Copy to Clipboard Toggle word wrap

Visual Studio Code

  1. Java Extension Pack をインストールします。
  2. Visual Studio Code でプロジェクトディレクトリーを開きます。

検証

プロジェクトは Maven プロジェクトとしてロードされます。

1.9. Red Hat build of Quarkus プロジェクトの出力を設定する

アプリケーションをビルドする前に、application.properties ファイル内のプロパティーのデフォルト値を変更することで、ビルドコマンドの出力を制御できます。

前提条件

  • Quarkus Maven プロジェクトを作成している。

手順

  1. {project}/src/main/resources フォルダーに移動し、テキストエディターで application.properties ファイルを開きます。
  2. 変更するプロパティーを追加し、ファイルを保存します。

    Expand
    表1.1 変更できるプロパティー
    プロパティー説明デフォルト

    quarkus.package.main-class

    アプリケーションのエントリーポイント。ほとんどの場合、この値は変更する必要があります。

    string

    io.quarkus.runner.GeneratedMain

    quarkus.package.type

    リクエストされるパッケージ出力タイプ。'jar' ('fast-jar' を使用)、デフォルトの jar パッケージが 1.12 より前の場合は 'legacy-jar'、'uber-jar'、'native'、または 'native-sources' に設定できます。

    string

    jar

    quarkus.package.manifest.add-implementation-entries

    実装情報をランナー JAR ファイルの MANIFEST.MF ファイルに含める必要があるかどうかを決定します。

    boolean

    true

    quarkus.package.user-configured-ignored-entries

    出力アーティファクトへのコピーが禁止されているファイル。

    string (リスト)

     

    quarkus.package.runner-suffix

    ランナー JAR ファイルに適用される接尾辞。

    string

    -runner

    quarkus.package.output-directory

    アプリケーションビルドの出力フォルダー。これは、ビルドシステムのターゲットディレクトリーと相対的に解決されます。

    string

     

    quarkus.package.output-name

    最終的なアーティファクトの名前。

    string

     

1.10. カスタムプロファイルを使用して JVM モードで Red Hat build of Quarkus をテストする

他の実行モードと同様に、テスト用の設定値は src/main/resources/application.properties ファイルから読み取られます。

デフォルトでは、Java 仮想マシン (JVM) モードでのテスト中に test プロファイルがアクティブになり、%test で始まるプロパティーが優先されます。たとえば、次の設定でテストを実行すると、プロパティー message に返される値は Test Value です。

message=Hello
%test.message=Test Value
Copy to Clipboard Toggle word wrap

%test プロファイルが非アクティブ (dev、prod) の場合、プロパティー message に返される値は Hello です。

たとえばアプリケーションでは、さまざまなデータベースインスタンスに対して一連のテストを実行するために、複数のテストプロファイルが必要になる場合があります。これを行うには、Maven 実行時にシステムプロパティー quarkus.test.profile を設定して、テストプロファイル名をオーバーライドする必要があります。そうすることで、テスト中にどの設定値のセットをアクティブにするか制御できます。

「Quarkus の使用開始」の例を使用した標準テストの詳細は、Red Hat build of Quarkus の使用開始ガイドの Red Hat build of Quarkus アプリケーションのテスト を参照してください。

前提条件

  • Apache Maven を使用して作成した Quarkus プロジェクトがある。

手順

Quarkus アプリケーションでテストを実行する場合、デフォルトで test 設定プロファイルがアクティブに設定されます。ただし、quarkus.test.profile システムプロパティーを使用して、プロファイルをカスタムプロファイルに変更できます。

  1. 次のコマンドを実行してアプリケーションをテストします。
mvn test -Dquarkus.test.profile=__<profile-name>__
Copy to Clipboard Toggle word wrap
注記

ネイティブモードでは、カスタムのテスト設定プロファイルは使用できません。ネイティブテストは、必ず prod プロファイルの下で実行されます。

1.11. Red Hat build of Quarkus アプリケーションのビルドクラスパスツリーのロギング

Quarkus ビルドプロセスでは、アプリケーションで使用するエクステンションのデプロイメント依存関係が、元のアプリケーションクラスパスに追加されます。ビルドクラスパスに含まれる依存関係およびバージョンを確認できます。quarkus-maven-plugin Maven プラグインには、アプリケーションのビルド依存関係ツリーを表示する dependency-tree ゴールが含まれています。

前提条件

  • Quarkus Maven アプリケーションを作成している。

手順

  • アプリケーションのビルド依存関係ツリーをリスト表示するには、以下のコマンドを入力します。

    ./mvnw quarkus:dependency-tree
    Copy to Clipboard Toggle word wrap

    出力例: 表示される出力は、正確にはこの例と異なります。

    [INFO] └─ io.quarkus:quarkus-resteasy-deployment:jar:3.15.7.redhat-00001 (compile)
    [INFO]    ├─ io.quarkus:quarkus-resteasy-server-common-deployment:jar:3.15.7.redhat-00001 (compile)
    [INFO]    │  ├─ io.quarkus:quarkus-resteasy-common-deployment:jar:3.15.7.redhat-00001 (compile)
    [INFO]    │  │  ├─ io.quarkus:quarkus-resteasy-common:jar:3.15.7.redhat-00001 (compile)
    [INFO]    │  │  │  ├─ org.jboss.resteasy:resteasy-core:jar:6.2.4.Final-redhat-00003 (compile)
    [INFO]    │  │  │  │  ├─ jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0.redhat-00008 (compile)
    [INFO]    │  │  │  │  ├─ org.jboss.resteasy:resteasy-core-spi:jar:6.2.4.Final-redhat-00003 (compile)
    [INFO]    │  │  │  │  ├─ org.reactivestreams:reactive-streams:jar:1.0.4.redhat-00003 (compile)
    [INFO]    │  │  │  │  └─ com.ibm.async:asyncutil:jar:0.1.0.redhat-00010 (compile)
    ...
    Copy to Clipboard Toggle word wrap

注記

mvn dependency:tree コマンドは、アプリケーションのランタイム依存関係のみを表示します。

1.12. ネイティブ実行可能ファイルの作成

ネイティブバイナリーは、特定のオペレーティングシステムおよび CPU アーキテクチャー上で実行するために作成された実行可能ファイルです。

以下は、ネイティブ実行可能ファイルの例をいくつか示しています。

  • Linux AMD 64 ビット用の ELF バイナリー
  • Windows AMD 64 ビット用の EXE バイナリー
  • ARM 64 ビット用の ELF バイナリー
注記

Red Hat build of Quarkus では、Linux x86-64 または AArch64 ビット用の ELF バイナリーのみがサポートされています。

ネイティブ実行可能ファイルを構築する利点の 1 つは、Java 仮想マシン (JVM) を含むアプリケーションと依存関係が 1 つのファイルにパッケージ化されることです。アプリケーションのネイティブ実行可能ファイルには、次の項目が含まれています。

  • コンパイルされたアプリケーションコード
  • 必要な Java ライブラリー
  • アプリケーションの起動時間を短縮し、ディスクとメモリーのフットプリントを最小限に抑えるための仮想マシン (VM) の縮小バージョン。これは、アプリケーションコードとその依存関係に合わせて調整されています。

Quarkus アプリケーションからネイティブ実行可能ファイルを生成する場合は、コンテナ内ビルドまたはローカルホストビルドのいずれかを選択できます。次の表は、使用可能なビルドオプションとその説明を示しています。

Expand
表1.2 ネイティブ実行可能ファイルの生成に使用できるビルドオプション
ビルドオプション必須用途結果利点

コンテナ内ビルド - サポート対象

コンテナーランタイム (Podman や Docker など)

デフォルトの registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1 ビルダーイメージ

ホストの CPU アーキテクチャーを使用する Linux 64 ビット実行可能ファイル

GraalVM はローカルで設定する必要がないため、CI パイプライン の実行効率が向上します。

ローカルホストビルド - アップストリームでのみサポート対象

GraalVM または Mandrel のローカルインストール

quarkus.native.builder-image プロパティーのデフォルトのローカルインストール

ビルドが実行されるマシンと同じオペレーティングシステムおよび CPU アーキテクチャーを持つ実行可能ファイル

Docker や Podman などのツールを使用できない、または使用しない開発者向けの代替手段。総じて、コンテナ内ビルドアプローチよりも高速です。

重要
  • Red Hat build of Quarkus 3.15 は、GraalVM Mandrel の製品化されたディストリビューションである Java 21 ベースの Red Hat build of Quarkus Native Builder イメージ (quarkus/mandrel-for-jdk-21-rhel8) を使用したネイティブ Linux 実行可能ファイルのビルドのみをサポートします。Quarkus コミュニティーでは他のイメージも利用できますが、それらは製品ではサポートされていないため、Red Hat によるサポートが必要な実稼働ビルドには使用しないでください。
  • ソースが 17 に基づいて記述され、Java 18 - 21 の機能が使用されていないアプリケーションでも、Java 21 ベースの Mandrel 23.1 ベースイメージを使用して、そのアプリケーションのネイティブ実行可能ファイルをコンパイルできます。
  • Red Hat build of Quarkus は、Oracle GraalVM Community Edition (CE)、Mandrel コミュニティーエディション、またはその他の GraalVM ディストリビューションを使用したネイティブ実行可能ファイルのビルドをサポートしていません。詳細は、Red Hat build of Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルする を参照してください。

1.12.1. コンテナ内ビルドを使用してネイティブ実行可能ファイルを生成する

ネイティブ実行可能ファイルを作成し、ネイティブイメージテストを実行するには、コンテナ内ビルド用に Red Hat build of Quarkus が提供する native プロファイルを使用します。

前提条件

  • Podman または Docker がインストールされている。
  • コンテナーは、8 GB 以上のメモリーにアクセスできる。
  • オプション: Quarkus CLI がインストールされている。これは、ネイティブ実行可能ファイルをビルドする方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. Getting Started プロジェクトの pom.xml ファイルを開き、プロジェクトに native プロファイルが含まれていることを確認します。

    <profiles>
      <profile>
        <id>native</id>
        <activation>
          <property>
            <name>native</name>
          </property>
        </activation>
        <properties>
          <skipITs>false</skipITs>
          <quarkus.package.type>native</quarkus.package.type>
        </properties>
      </profile>
    </profiles>
    Copy to Clipboard Toggle word wrap
  2. 次のいずれかの方法を使用して、ネイティブ実行可能ファイルをビルドします。

    • Maven を使用する場合:

      • Docker の場合:

        ./mvnw package -Dnative -Dquarkus.native.container-build=true
        Copy to Clipboard Toggle word wrap
      • Podman の場合:

        ./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
        Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      • Docker の場合:

        quarkus build --native -Dquarkus.native.container-build=true
        Copy to Clipboard Toggle word wrap
      • Podman の場合:

        quarkus build --native -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
        Copy to Clipboard Toggle word wrap

        手順を実行した結果

        これらのコマンドを実行すると、target ディレクトリーに *-runner バイナリーが作成されます。その場合は、以下が適用されます。

      • *-runner ファイルは、Quarkus が生成するビルドされたネイティブバイナリーです。
      • target ディレクトリーは、Maven アプリケーションをビルドするときに Maven が作成するディレクトリーです。

        重要

        Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルすると、分析および最適化の際にメモリーを大量に消費します。quarkus.native.native-image-xmx 設定プロパティーを設定して、ネイティブコンパイル時に使用されるメモリーの量を制限できます。メモリー制限を低く設定すると、ビルド時間が長くなる可能性があります。

  3. ネイティブ実行可能ファイルを実行するには、以下のコマンドを入力します。

    ./target/*-runner
    Copy to Clipboard Toggle word wrap

関連情報

1.12.2. ローカルホストビルドを使用してネイティブ実行可能ファイルを生成する

Docker または Podman を使用しない場合は、ネイティブ実行可能ファイルの作成と実行に Quarkus ローカルホストビルドオプションを使用します。

ローカルホストビルドアプローチを使用すると、コンテナーを使用した場合と比べて高速になるため、Linux オペレーティングシステムを使用するマシンに適しています。

重要

Red Hat build of Quarkus では、本番環境での次の手順の使用はサポートされていません。この方法は、テストで、もしくは Docker や Podman が使用できない場合のバックアップアプローチとしてのみ使用してください。

前提条件

  • Quarkus の Building a native executable ガイドに従って正しく設定された、Mandrel または GraalVm のローカルインストール。

    • GraalVM インストールの場合は、native-image もインストールされている必要があります。
  • オプション: Quarkus CLI がインストールされている。これは、ネイティブ実行可能ファイルをビルドする方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. GraalVM または Mandrel の場合は、次のいずれかの方法を使用してネイティブ実行可能ファイルをビルドします。

    • Maven を使用する場合:

      ./mvnw package -Dnative
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus build --native
      Copy to Clipboard Toggle word wrap

      手順を実行した結果

      これらのコマンドを実行すると、target ディレクトリーに *-runner バイナリーが作成されます。その場合は、以下が適用されます。

      • *-runner ファイルは、Quarkus が生成するビルドされたネイティブバイナリーです。
      • target ディレクトリーは、Maven アプリケーションをビルドするときに Maven が作成するディレクトリーです。

        注記

        ネイティブ実行可能ファイルをビルドすると、quarkus.profile プロパティーで変更されない限り、prod プロファイルが有効になります。

  2. ネイティブ実行可能ファイルを実行します。

    ./target/*-runner
    Copy to Clipboard Toggle word wrap

関連情報

詳細は、Quarkus の「ネイティブ実行可能ファイルの構築」ガイドの ネイティブ実行可能ファイルの作成 セクションを参照してください。

1.12.3. 手動によるコンテナーの作成

Linux AMD64 用のアプリケーションを使用して、コンテナーイメージを手動で作成できます。Quarkus ネイティブコンテナーを使用してネイティブイメージを生成すると、そのネイティブイメージは Linux AMD64 をターゲットとする実行可能ファイルを作成します。ホストオペレーティングシステムが Linux AMD64 ではない場合は、バイナリーを直接実行できず、手動でコンテナーを作成する必要があります。

Quarkus Getting Started プロジェクトには、以下の内容と共に src/main/docker ディレクトリーに Dockerfile.native が含まれます。

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.10
WORKDIR /work/
RUN chown 1001 /work \
    && chmod "g+rwX" /work \
    && chown 1001:root /work
COPY --chown=1001:root target/*-runner /work/application

EXPOSE 8080
USER 1001

ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]
Copy to Clipboard Toggle word wrap
注記

Universal Base Image (UBI)

次のリストは、Dockerfile での使用に適したイメージを示しています。

  • Red Hat Universal Base Image 8 (UBI8)。このベースイメージは、コンテナー化されたすべてのアプリケーション、ミドルウェア、ユーティリティーのベースレイヤーになるように設計されています。

    registry.access.redhat.com/ubi8/ubi:8.10
    Copy to Clipboard Toggle word wrap
  • Red Hat Universal Base Image 8 Minimal (UBI8-minimal)。microdnf をパッケージマネージャーとして使用する、最小化された UBI8 イメージ。

    registry.access.redhat.com/ubi8/ubi-minimal:8.10
    Copy to Clipboard Toggle word wrap
  • すべての Red Hat Base イメージは、コンテナーイメージ カタログサイトで入手できます。

手順

  1. 次のいずれかの方法を使用して、ネイティブ Linux 実行可能ファイルをビルドします。

    • Docker:

      ./mvnw package -Dnative -Dquarkus.native.container-build=true
      Copy to Clipboard Toggle word wrap
    • Podman:

      ./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
      Copy to Clipboard Toggle word wrap
  2. 次のいずれかの方法を使用して、コンテナーイメージをビルドします。

    • Docker:

      docker build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
      Copy to Clipboard Toggle word wrap
    • Podman

      podman build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
      Copy to Clipboard Toggle word wrap
  3. 次のいずれかの方法を使用して、コンテナーを実行します。

    • Docker:

      docker run -i --rm -p 8080:8080 quarkus-quickstart/getting-started .
      Copy to Clipboard Toggle word wrap
    • Podman:

      podman run -i --rm -p 8080:8080 quarkus-quickstart/getting-started .
      Copy to Clipboard Toggle word wrap

1.13. ネイティブ実行可能ファイルをテストする

ネイティブ実行可能ファイルの機能をテストするには、ネイティブモードでアプリケーションをテストします。@QuarkusIntegrationTest アノテーションを使用してネイティブ実行可能ファイルをビルドし、HTTP エンドポイントに対してテストを実行します。

重要

次の例は、GraalVM または Mandrel のローカルインストールを使用してネイティブ実行可能ファイルをテストする方法を示しています。テストを実行する前に、次の点を考慮してください。

  • ネイティブ実行可能ファイルの作成 で説明されているように、Red Hat build of Quarkus はこのシナリオをサポートしていません。
  • ここでテストするネイティブ実行可能ファイルは、ホストのオペレーティングシステムとアーキテクチャーに一致する必要があります。したがって、ネイティブバイナリーが macOS 上のコンテナー内にビルドされている場合、この手順は使用できません。

手順

  1. pom.xml ファイルを開き、build セクションに次の要素が含まれていることを確認します。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <executions>
            <execution>
                <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                </goals>
                <configuration>
                    <systemPropertyVariables>
                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <maven.home>${maven.home}</maven.home>
                    </systemPropertyVariables>
                </configuration>
            </execution>
        </executions>
    </plugin>
    Copy to Clipboard Toggle word wrap
    • Maven Failsafe プラグイン (maven-failsafe-plugin) は結合テストを実行し、生成されたネイティブ実行可能ファイルの場所を示します。
  2. src/test/java/org/acme/GreetingResourceIT.java ファイルを開き、次のコンテンツが含まれていることを確認します。

    package org.acme;
    
    import io.quarkus.test.junit.QuarkusIntegrationTest;
    
    @QuarkusIntegrationTest 
    1
    
    public class GreetingResourceIT extends GreetingResourceTest { 
    2
    
    
        // Execute the same tests but in native mode.
    }
    Copy to Clipboard Toggle word wrap
    1
    テストの前に、ネイティブファイルからアプリケーションを開始する別のテストランナーを使用します。実行可能ファイルは、Maven Failsafe プラグインで設定された native.image.path システムプロパティーを使用して取得されます。
    2
    この例は、GreetingResourceTest を拡張しますが、新しいテストを作成することも可能です。
  1. テストを実行します。

    ./mvnw verify -Dnative
    Copy to Clipboard Toggle word wrap

    以下の例は、このコマンドの出力を示しています。

    ./mvnw verify -Dnative
    ....
    
    GraalVM Native Image: Generating 'getting-started-1.0.0-SNAPSHOT-runner' (executable)...
    ========================================================================================================================
    [1/8] Initializing...                                                                                    (6.6s @ 0.22GB)
     Java version: 21.0.4+7-LTS, vendor version: Mandrel-23.1.4.0-1b1
     Graal compiler: optimization level: 2, target machine: x86-64-v3
     C compiler: gcc (redhat, x86_64, 13.2.1)
     Garbage collector: Serial GC (max heap size: 80% of RAM)
     2 user-specific feature(s)
     - io.quarkus.runner.Feature: Auto-generated class by Red&#160;Hat build of Quarkus from the existing extensions
     - io.quarkus.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase
    [2/8] Performing analysis...  [******]                                                                  (40.0s @ 2.05GB)
      10,318 (86.40%) of 11,942 types reachable
      15,064 (57.36%) of 26,260 fields reachable
      52,128 (55.75%) of 93,501 methods reachable
       3,298 types,   109 fields, and 2,698 methods registered for reflection
          63 types,    68 fields, and    55 methods registered for JNI access
           4 native libraries: dl, pthread, rt, z
    [3/8] Building universe...                                                                               (5.9s @ 1.31GB)
    [4/8] Parsing methods...      [**]                                                                       (3.7s @ 2.08GB)
    [5/8] Inlining methods...     [***]                                                                      (2.0s @ 1.92GB)
    [6/8] Compiling methods...    [******]                                                                  (34.4s @ 3.25GB)
    [7/8] Layouting methods...    [**]                                                                       (4.1s @ 1.78GB)
    [8/8] Creating image...       [**]                                                                       (4.5s @ 2.31GB)
      20.93MB (48.43%) for code area:    33,233 compilation units
      21.95MB (50.80%) for image heap:  285,664 objects and 8 resources
     337.06kB ( 0.76%) for other data
      43.20MB in total
    
    ....
    
    
    [INFO]
    [INFO] --- maven-failsafe-plugin:3.0.0-M7:integration-test (default) @ getting-started ---
    [INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
    [INFO]
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running org.acme.GreetingResourceIT
    __  ____  __  _____   ___  __ ____  ______
     --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
     -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
    --\___\_\____/_/ |_/_/|_/_/|_|\____/___/
    2024-09-27 14:04:52,681 INFO  [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT native (powered by Quarkus 3.15.7.redhat-00001) started in 0.038s. Listening on: http://0.0.0.0:8081
    2024-09-27 14:04:52,682 INFO  [io.quarkus] (main) Profile prod activated.
    2024-09-27 14:04:52,682 INFO  [io.quarkus] (main) Installed features: [cdi, rest, smallrye-context-propagation, vertx]
    [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.696 s - in org.acme.GreetingResourceIT
    [INFO]
    [INFO] Results:
    [INFO]
    [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
    [INFO]
    [INFO]
    [INFO] --- maven-failsafe-plugin:3.0.0-M7:verify (default) @ getting-started ---
    Copy to Clipboard Toggle word wrap
    注記

    Quarkus は、ネイティブイメージが起動するのを 60 秒間待機してから、自動的にネイティブテストに失敗します。この期間は、quarkus.test.wait-time システムプロパティーを設定することで変更できます。

    以下のコマンドを使用して、待機時間を延長できます。この場合の <duration> は待機時間 (秒単位) です。

    ./mvnw verify -Dnative -Dquarkus.test.wait-time=<duration>
    Copy to Clipboard Toggle word wrap
    注記
    • デフォルトでは、quarkus.test.native-image-profile プロパティーで変更されていない限り、ネイティブテストは prod プロファイルを使用して実行されます。

1.14. Red Hat build of Quarkus 開発モードを使用する

開発モードを使用すると、バックグラウンドコンパイルによるホットデプロイメントが可能になります。つまり、Java ファイルまたはリソースファイルを変更してからブラウザーを更新すると、変更が自動的に反映されます。これは、設定プロパティーファイルなどのリソースファイルでも同じく反映されます。Quarkus を開発モードで起動するには、Maven または Quarkus コマンドラインインターフェイス (CLI) を使用します。

前提条件

  • Quarkus Maven アプリケーションを作成している。
  • オプション: Quarkus CLI がインストールされている。これは、Quarkus を開発モードで起動する方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

  1. Quarkus アプリケーションの pom.xml ファイルが含まれるディレクトリーに切り替えます。
  2. Quarkus アプリケーションを開発モードでコンパイルして起動するには、次のいずれかの方法を使用します。

    • Maven を使用する場合:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus dev
      Copy to Clipboard Toggle word wrap
  3. アプリケーションに変更を加え、ファイルを保存します。
  4. ブラウザーを更新して、ワークスペースのスキャンをトリガーします。

    変更が検出されると、Java ファイルが再コンパイルされ、アプリケーションが再デプロイされます。その後、要求は再デプロイされたアプリケーションによって処理されます。コンパイルまたはデプロイメントに問題がある場合は、エラーページが表示されます。

    開発モードでは、デバッガーがアクティベートされ、ポート 5005 をリッスンします。

  5. 任意手順: アプリケーションの実行前にデバッガーが割り当てられるのを待つようにするには、-Dsuspend を追加します。

    ./mvnw quarkus:dev -Dsuspend
    Copy to Clipboard Toggle word wrap
  6. 任意手順: デバッガーが実行されないようにするには、-Ddebug=false を追加します。

    ./mvnw quarkus:dev -Ddebug=false
    Copy to Clipboard Toggle word wrap

1.15. Red Hat build of Quarkus プロジェクトをデバッグする

Red Hat build of Quarkus を開発モードで起動すると、デフォルトでデバッグが有効になり、デバッガーは JVM を一時停止せずにポート 5005 でリッスンします。Quarkus のデバッグ機能を有効にして設定するには、コマンドラインを使用するか、システムプロパティーを設定します。Quarkus CLI を使用してプロジェクトをデバッグすることもできます。

前提条件

  • Red Hat build of Quarkus Maven プロジェクトを作成している。
  • オプション: Quarkus コマンドラインインターフェイス (CLI) がインストールされている。これは、プロジェクトのコンパイルとデバッグを行う方法の 1 つとして使用できます。詳細は、Quarkus CLI のインストール を参照してください。
注記

Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

手順

デバッグを制御するには、以下のいずれかの方法を使用します。

システムプロパティーを設定してデバッガーを制御する

  1. 以下の debug システムプロパティーの値の 1 つを変更します。ここで、PORT はデバッガーがリッスンするポートです。

    • false: JVM はデバッグモードを無効にして開始します。
    • true: JVM はデバッグモードで開始し、ポート 5005 でリッスンしています。
    • client: JVM はクライアントモードで起動され、localhost:5005 への接続を試みます。
    • PORT: JVM はデバッグモードで開始され、PORT をリッスンしています。
  2. デバッグモードでの実行中に JVM を一時停止するには、suspend システムプロパティーの値を次のいずれかの値に設定します。

    • y または true: デバッグモードの JVM の起動が一時停止します。
    • n または false: デバッグモードの JVM は一時停止せずに起動します。

コマンドラインからのデバッガーの制御

  • 一時停止された JVM を使用して、デバッグモードで Quarkus アプリケーションをコンパイルおよび起動するには、次のいずれかの方法を使用します。

    • Maven を使用する場合:

      ./mvnw quarkus:dev -Dsuspend
      Copy to Clipboard Toggle word wrap
    • Quarkus CLI を使用する場合:

      quarkus dev --suspend
      Copy to Clipboard Toggle word wrap

特定のホストネットワークインターフェイスに対してデバッガーを有効にする

開発モードでは、セキュリティー上の理由から Quarkus はデフォルトでデバッグホストインターフェイスを localhost に設定します。

特定のホストネットワークインターフェイスに対してデバッガーを有効にするには、次のいずれかの方法で -DdebugHost オプションを使用できます。

  • Maven を使用する場合:

    ./mvnw quarkus:dev -DdebugHost=<host-ip-address>
    Copy to Clipboard Toggle word wrap
  • Quarkus CLI を使用する場合:

    quarkus dev --debug-host=<host-ip-address>
    Copy to Clipboard Toggle word wrap

<host-ip-address> は、デバッグを有効にするホストネットワークインターフェイスの IP アドレスです。

注記

すべてのホストインターフェイスでデバッグを有効にするには、<host-ip-address> を次の値に置き換えます。

0.0.0.0
Copy to Clipboard Toggle word wrap

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat