Apache Maven を使用した Quarkus アプリケーションの開発およびコンパイル


Red Hat build of Quarkus 2.13

概要

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

第1章 Apache Maven を使用した Quarkus アプリケーションの開発およびコンパイル

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

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

注記

該当する場合は、Quarkus コマンドラインインターフェイス (CLI) を使用する代替手順を示しています。Quarkus CLI は、開発モードのみを対象としています。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしません。

前提条件

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

    • Red Hat OpenJDK をダウンロードするには、Red Hat カスタマーポータル にログインし、ソフトウェアのダウンロード に 移動します
  • JAVA_HOME 環境変数を設定して Java SDK の場所を指定している。
  • Apache Maven 3.8.x がインストールされている。x は 6 以降です。

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

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

1.1. Red Hat build of Quarkus について

Red Hat ビルドの Quarkus は、コンテナーおよび Red Hat OpenShift Container Platform と使用するために最適化された Kubernetes ネイティブ Java スタックです。Quarkus は、Eclipse MicroProfile、Eclipse Vert.x、Apache Camel、Apache Kafka、Hibernate ORM with Java Persistence API (JPA)、RESTEasy (JAX-RS)などの一般的な Java 標準、フレームワーク、およびライブラリーと連携するように設計されています。

開発者は、Java アプリケーションに必要な Java フレームワークを選択できます。これは、Java 仮想マシン (JVM) モードで実行することも、ネイティブモードでコンパイルして実行することもできます。Quarkus は、コンテナーファーストという手法で Java アプリケーションをビルドします。コンテナーファーストのアプローチにより、コンテナー化と、マイクロサービスと関数の効率的な実行が容易になります。このため、Quarkus アプリケーションのメモリーフットプリントは小さく、起動時間が短縮されます。

Quarkus はまた、統合設定、未設定のサービスの自動プロビジョニング、ライブコーディング、コード変更に関する即時フィードバックを提供する継続的テストなどの機能により、アプリケーション開発プロセスを最適化します。

Quarkus コミュニティーバージョンと Red Hat ビルドの Quarkus の相違点は、Quarkus コミュニティーバージョン と Red Hat ビルド の Quarkus の相違点 を参照し てください。

1.2. Apache Maven および Quarkus について

Apache Maven は分散型構築自動化ツールで、Java アプリケーション開発でソフトウェアプロジェクトの作成、ビルド、管理に使用されます。Maven は Project Object Model (POM) ファイルと呼ばれる標準の設定ファイルを使用して、プロジェクトの定義や構築プロセスの管理を行います。POM ファイルには、モジュールとコンポーネントの依存関係、ビルド順序、結果として得られるプロジェクトのパッケージ化と出力のターゲットがXML ファイルを使用して記述されており、これによりプロジェクトが正しく均一にビルドされることが保証されます。

Maven リポジトリー

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

Red Hat がホストする Maven リポジトリーを Quarkus プロジェクトで使用するか、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 が テスト プロファイルを有効にする場合、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/.m2 /conf/ ディレクトリーの settings.xml ファイルを $HOME/. m2/ ディレクトリーにコピーします。

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

    <!-- Configure the 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.2.2. Quarkus Maven リポジトリーの設定

オンライン Maven リポジトリーを使用しない場合は、Quarkus Maven リポジトリーをダウンロードして設定できます。Quarkus Maven リポジトリーには、Java 開発者がアプリケーションの構築に使用する依存関係が複数含まれています。この手順では、settings.xml ファイルを編集して Quarkus Maven リポジトリーを設定する方法を説明します。

注記

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

手順

  1. Red Hat カスタマーポータル にログインし、Software Downloads に移動し、Quarkus Maven リポジトリーの ZIP ファイルをダウンロードします。
  2. ダウンロードしたアーカイブをデプロイメントします。
  3. $HOME/.m2/ ディレクトリーに移動し、テキストエディターまたは統合開発環境(IDE)で Maven の settings.xml ファイルを開きます。
  4. ダウンロードした Quarkus Maven リポジトリーのパスを、settings.xml ファイルの <profiles> 要素に追加します。Quarkus Maven リポジトリーのパスの形式は、file:// $PATH にする必要があります(例:file:///home/userX/<root-directory-of-the-downloaded-archive>/maven-repository )。

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

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

Maven リポジトリーに古いアーティファクトが含まれる場合は、プロジェクトをビルドまたはデプロイしたときに以下のいずれかの Maven エラーメッセージが表示されることがあります。

  • Missing artifact <project_name>
  • [ERROR] Failed to execute goal on project <artifact_name>; Could not resolve dependencies for <project_name>

ここでは、以下のようになります。

  • & lt;ARTIFACT_NAME&gt; は、欠落しているアーティファクトの名前です。
  • <PROJECT_NAME > - ビルドを試みているプロジェクトの名前。

この問題を解決するには、$HOME/.m2/ repository ディレクトリーにあるローカルリポジトリーのキャッシュバージョンを削除して、最新の Maven アーティファクトを強制的にダウンロードします。

1.3. コマンドラインでの Quarkus プロジェクトの作成

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

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

前提条件

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

    • Red Hat OpenJDK をダウンロードするには、Red Hat カスタマーポータル にログインし、ソフトウェアのダウンロード に 移動します
  • JAVA_HOME 環境変数を設定して Java SDK の場所を指定している。
  • Apache Maven 3.8.x がインストールされている。x は 6 以降です。

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

Quarkus CLI は、開発モードのみを対象としています。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしません。

手順

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

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

    • 以下のコマンドを入力します。

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:2.13.9.SP2-redhat-00003:create \
          -DprojectGroupId=<project_group_id> \
          -DprojectArtifactId=<project_artifact_id> \
          -DplatformGroupId=com.redhat.quarkus.platform \
          -DplatformArtifactId=quarkus-bom \
          -DplatformVersion=2.13.9.SP2-redhat-00003
      Copy to Clipboard Toggle word wrap

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

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

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:2.13.9.SP2-redhat-00003:create
      Copy to Clipboard Toggle word wrap

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

      注記

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

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:2.13.9.SP2-redhat-00003:create -B

    • Quarkus CLI を使用してプロジェクトを作成します。

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

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

以下の表は、create コマンドで定義できる属性をリスト表示しています。

Expand
属性デフォルト値説明

projectGroupId

org.acme

プロジェクトの一意識別子。

projectArtifactId

code-with-quarkus

プロジェクトおよびプロジェクトディレクトリーの名前。projectArtifactId 属性を指定しない場合、Maven プラグインはインタラクティブモードを起動します。ディレクトリーがすでに存在する場合、生成は失敗します。

projectVersion

1.0-SNAPSHOT

プロジェクトのバージョン。

platformGroupId

com.redhat.quarkus.platform

プラットフォームのグループ ID。既存のプラットフォームは、すべて com.redhat.quarkus.platform により提供されます。ただし、デフォルト値は変更することができます。

platformArtifactId

quarkus-bom

プラットフォーム BOM のアーティファクト ID。

platformVersion

最新のプラットフォームバージョン(例:2 .13.9.SP2-redhatTRUSTED)

プロジェクトに使用するプラットフォームのバージョン。バージョン範囲を指定すると、Maven プラグインは最新バージョンを使用します。

extensions

[]

プロジェクトに追加するエクステンションのコンマ区切りリスト。

注記

Quarkus Maven プラグインは、デフォルトで最新の quarkus-bom ファイルを使用します。quarkus-bom ファイルはエクステンションを集約し、アプリケーションからエクステンションを参照して依存関係バージョンを調整できるようにします。オフラインの場合、Quarkus Maven プラグインは、最新のローカルで利用可能なバージョンの quarkus-bom ファイルを使用します。Maven は、quarkus-bom バージョン 2.0 以前を検出すると、quarkus-bom に基づくプラットフォームを使用します。

1.4. pom.xml ファイルの設定による Quarkus プロジェクトの作成

Maven POM XML ファイルを設定して Quarkus プロジェクトを作成できます。

手順

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

    • Quarkus Maven プラグインのバージョン
    • Quarkus BOM の groupIDartifactID、および version
    • Maven Surefire プラグインバージョン
    <properties>
        <quarkus.platform.version>2.13.9.SP2-redhat-00003</quarkus.platform.version>
        <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
        <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
        <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap
  3. Quarkus GAV (グループ、アーティファクト、バージョン) を追加し、quarkus-universe-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 プラグインを追加します。

    <build>
        <plugins>
            <plugin>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>quarkus-maven-plugin</artifactId>
                <version>${quarkus.platform.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </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 を含むネイティブプロファイルを追加します。

    <profiles>
        <profile>
            <id>native</id>
            <properties>
                <quarkus.package.type>native</quarkus.package.type>
            </properties>
            <build>
                <plugins>
                    <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>
                                    <systemProperties>
                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                                    </systemProperties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    Copy to Clipboard Toggle word wrap
    • 名前に IT が含まれ、@NativeImageTest アノテーションが含まれるテストは、ネイティブ実行可能ファイルに対して実行されます。
    • ネイティブモードが JVM モードとどのように異なるかの詳細は、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 リポジトリーを設定している。Red Hat がホストする Quarkus リポジトリーを使用するか、Quarkus Maven リポジトリーをダウンロードして設定して、Maven で Quarkus アプリケーションを作成できます。

  • オプション: Quarkus コマンドラインインターフェイス(CLI)をインストールしている。これは、開発モードで Quarkus を開始するために使用できる方法の 1 つです。

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

注記

Quarkus CLI は、開発モードのみを対象としています。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしません。

手順

  1. Web ブラウザーで、https://code.quarkus.redhat.com に移動します。
  2. プロジェクトの基本情報を指定します。

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

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

        注記

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

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

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

      code.quarkus.redhat.com サイトのアプリケーションの詳細セクションのスクリーンショット。追加のアプリケーションの詳細を含む拡張フォームが表示されています。
    注記

    code.quarkus.redhat.com リポジトリーは、Red Hat ビルドの Quarkus の最新リリースを自動的に使用します。プロジェクトの生成後に、pom.xml ファイルで BOM バージョンを手動で変更できます。

  4. 使用するエクステンションを選択します。選択したエクステンションは、Quarkus アプリケーションの依存関係として含まれています。Quarkus プラットフォームは、これらのエクステンションが将来のバージョンと互換性があることも確認します。

    重要

    RESTEasy エクステンションと RESTEasy Reactive エクステンションは、同じプロジェクト内で使用しないでください。

    エクステンションの横にある 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

  5. 選択を確認するには、Generate your application を選択します。次の項目が表示されます。

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

    cd <directory_name>
    Copy to Clipboard Toggle word wrap
  9. 開発モードでアプリケーションをコンパイルおよび起動するには、以下のいずれかの方法を使用します。

    • 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 を設定することもできます。たとえば、-verbose を JVM および javac コマンドに渡すには、次の設定を追加します。

    <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. Java エクステンションのインストールおよび管理

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

前提条件

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

Quarkus CLI は、開発モードのみを対象としています。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 を使用して、追加するエクステンションのグループ、アーティファクト、バージョン(GAV)である次のコマンド <extension> を入力します。

      ./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 を使用して、追加するエクステンションの Group、Artifact、Version (GAV)の以下のコマンド <extension> を入力します。

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

    ./mvnw quarkus:add-extension -Dextensions=jdbc,agroal,non-exist-ent
    Copy to Clipboard Toggle word wrap

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

    ❌ Multiple extensions matching 'jdbc'
        * io.quarkus:quarkus-jdbc-h2
        * io.quarkus:quarkus-jdbc-mariadb
        * io.quarkus:quarkus-jdbc-postgresql
        Be more specific, for example, by using the exact name or the full GAV.
    ✅ Adding extension io.quarkus:quarkus-agroal
    ❌ Cannot find a dependency matching 'non-exist-ent', maybe a typo?
    [...]
    Copy to Clipboard Toggle word wrap

1.8. Quarkus プロジェクトの IDE へのインポート

テキストエディターで Quarkus プロジェクトを開発することは可能ですが、統合開発環境 (IDE) を使用した方がプロジェクトの作業がしやすいかもしれません。以下の手順では、Quarkus プロジェクトを特定の IDE にインポートする方法を説明します。

前提条件

  • Quarkus Maven プロジェクトがある。
  • Quarkus コマンドラインインターフェイス(CLI)をインストールしている。これは、開発モードでプロジェクトを起動する場合に必要です。詳細は、Quarkus CLI のインストール を参照し てください。
注記

Quarkus CLI は、開発モードのみを対象としています。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. Finish をクリックします。
  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. Quarkus プロジェクトの出力の設定

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

前提条件

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

手順

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

    次の表は、変更可能なプロパティーを示しています。

    Expand
    プロパティー説明デフォルト

    quarkus.package.main-class

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

    string

    io.quarkus.runner.GeneratedMain

    quarkus.package.type

    パッケージの要求された出力タイプ。jar (fast-jar を使用)、pre-1.12 のデフォルトの jar パッケージ、'uber-jar'、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 モードでの Quarkus アプリケーションのテスト

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

デフォルトでは、テスト プロファイルは JVM モードでのテスト中にアクティブになります。つまり、%test 接頭辞が付いたプロパティーが優先されます。たとえば、以下の設定でテストを実行すると、プロパティー メッセージ に返される値は Test Value になります。

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

%test プロファイルがアクティブではない場合(dev、prod)、プロパティー メッセージ に返される値は Hello になります。

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

Quarkus の例を使用した標準テストの詳細は、スタートガイド の JUnit を使用した 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. Quarkus アプリケーションのビルドクラスパスツリーのロギング

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

前提条件

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

手順

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

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

以下は、前のコマンドにより表示される出力の例を示しています。

[INFO] --- quarkus-bootstrap-maven-plugin:2.13:build-tree (default-cli) @ getting-started ---
[INFO] org.acme:getting-started:jar:1.0-SNAPSHOT
[INFO] └─ io.quarkus:quarkus-resteasy-deployment:jar:2.13 (compile)
[INFO]    ├─ io.quarkus:quarkus-resteasy-server-common-deployment:jar:2.13 (compile)
[INFO]    │  ├─ io.quarkus:quarkus-core-deployment:jar:2.13 (compile)
[INFO]    │  │  ├─ commons-beanutils:commons-beanutils:jar:1.9.3 (compile)
[INFO]    │  │  │  ├─ commons-logging:commons-logging:jar:1.2 (compile)
[INFO]    │  │  │  └─ commons-collections:commons-collections:jar:3.2.2 (compile)
...
Copy to Clipboard Toggle word wrap
注記

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

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

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

以下に、ネイティブ実行可能ファイルの例をいくつかリストします。

  • Mac のユニバーサルバイナリー
  • Linux 用の ELF バイナリー
  • Windows の EXE バイナリー

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

  • コンパイル済みアプリケーションコード
  • Java API
  • 必要なライブラリー
  • アプリケーションの起動時間を改善し、ディスクおよびメモリーのフットプリントを最小限に抑えるための Java 仮想マシン(JVM)の縮小バージョン。

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

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

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

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

デフォルトの registry.access.redhat.com/quarkus/mandrel-22-rhel8:22.3 ビルダーイメージ

Linux 64 ビット実行可能ファイル

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

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

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

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

ビルドが実行されるマシンと同じ OS および CPU アーキテクチャーを持つ実行ファイル。

Docker や Podman などのツールを使用できない、または使用しない開発者の代替です。全体的にはコンテナーよりも高速です。

注記

Red Hat ビルドの Quarkus 2.13 は、Java 17 ベースの Mandrel 22.3 ベースイメージに基づくネイティブ実行可能ファイルの構築のみをサポートします。

他のイメージはコミュニティーで入手できますが、製品ではサポートされていないため、Red Hat のサポートを希望する実稼働ビルドには使用しないでください。

ソースが Java 11 に基づいて書かれており、Java 12 - 17 の機能を使用せずに、Java 17 ベースの Mandrel 22.3 ベースイメージを使用して、そのアプリケーションのネイティブ実行可能ファイルをコンパイルできます。

重要

Red Hat ビルドの Quarkus は、Red Hat ビルドの Quarkus ネイティブビルダーイメージ( Mandrel の製品化ディストリビューション)を使用したネイティブ Linux 実行可能ファイルの構築 をサポートします。詳細は、Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルする を参照してください。Oracle GraalVM Community Edition (CE)、Mandrel Community Edition、またはその他の GraalVM ディストリビューションを使用したネイティブ実行可能ファイルのビルドは、Red Hat build of Quarkus ではサポートされていません。

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

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

前提条件

  • Podman または Docker がインストールされている。
  • コンテナーは、8 GB 以上のメモリーにアクセスできる。

手順

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

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

    • Maven の使用:

      • Docker の場合:

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

        ./mvnw package -Pnative -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 が使用できない場合のバックアップアプローチとしてのみ使用してください。

前提条件

手順

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

    • Maven の使用:

      ./mvnw package -Pnative
      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.test.native-image-profile プロパティーで変更されない限り、ネイティブテストはデフォルトで prod プロファイルを使用して実行されます。

関連情報

詳細は、ネイティブ実行可能ファイルの作成 を 参照してください。

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.6
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

CMD ["./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.6
    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.6
    Copy to Clipboard Toggle word wrap
  • すべての Red Hat Base イメージは、コンテナーイメージ カタログサイトで入手できます。

手順

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

    • Docker:

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

      ./mvnw package -Pnative -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 エンドポイントに対してテストを実行します。

手順

  1. pom.xml ファイルを開き、native プロファイルに以下の要素があることを確認します。

    <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/quickstart/NativeGreetingResourceIT.java ファイルを開き、次のコンテンツが含まれていることを確認します。

    package org.acme.getting.started;
    
    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 を拡張しますが、新しいテストを作成することも可能です。
  3. テストを実行します。

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

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

    ./mvnw verify -Pnative
    ...
    [getting-started-1.0-SNAPSHOT-runner:18820]     universe:     587.26 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]      (parse):   2,247.59 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]     (inline):   1,985.70 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]    (compile):  14,922.77 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]      compile:  20,361.28 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]        image:   2,228.30 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]        write:     364.35 ms
    [getting-started-1.0-SNAPSHOT-runner:18820]      [total]:  52,777.76 ms
    [INFO]
    [INFO] --- maven-failsafe-plugin:2.22.1:integration-test (default) @ getting-started ---
    [INFO]
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running org.acme.quickstart.NativeGreetingResourceIT
    Executing [/data/home/gsmet/git/quarkus-quickstarts/getting-started/target/getting-started-1.0-SNAPSHOT-runner, -Dquarkus.http.port=8081, -Dtest.url=http://localhost:8081, -Dquarkus.log.file.path=build/quarkus.log]
    2019-04-15 11:33:20,348 INFO  [io.quarkus] (main) Quarkus 999-SNAPSHOT started in 0.002s. Listening on: http://[::]:8081
    2019-04-15 11:33:20,348 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy]
    [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.387 s - in org.acme.quickstart.NativeGreetingResourceIT
    ...
    Copy to Clipboard Toggle word wrap
    注記

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

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

    ./mvnw verify -Pnative -Dquarkus.test.wait-time=<duration>
    Copy to Clipboard Toggle word wrap

1.14. Quarkus 開発モードの使用

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

前提条件

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

Quarkus CLI は、開発モードのみを対象としています。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. Quarkus プロジェクトのデバッグ

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

前提条件

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

Quarkus CLI は、開発モードのみを対象としています。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 -Dsuspend
      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 -DdebugHost=<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 © 2024 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

© 2026 Red Hat
トップに戻る