Apache Maven を使用した Quarkus アプリケーションの作成
概要
前書き リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、Red Hat ビルドの Quarkus を使用して、サーバーレス環境および OpenShift 環境で実行される Java で書かれたマイクロサービスベースのアプリケーションを作成できます。これらのアプリケーションのメモリーフットプリントは小さくなり、起動時間は高速化されます。
本ガイドでは、Apache Maven プラグインを使用して Quarkus プロジェクトを作成する方法を説明します。
前提条件
-
OpenJDK (JDK) 11 がインストールされ、
JAVA_HOME環境変数が Java SDK の場所を指定していること。Red Hat ビルドの Open JDK は、Red Hat カスタマーポータルの Software Downloads ページから入手可能です (ログインが必要です)。 - Apache Maven 3.6.2 以降がインストールされていること。Maven は Apache Maven Project の Web サイトから入手できます。
第1章 Red Hat ビルドの Quarkus リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus は、コンテナーおよび Red Hat OpenShift Container Platform と使用するために最適化された Kubernetes ネイティブ Java スタックです。Quarkus は、Eclipse MicroProfile、Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Apache Camel などの一般的な Java 標準、フレームワーク、およびライブラリーと連携するように設計されています。
Quarkus のディペンデンシーインジェクション (依存性の注入) ソリューションは、CDI (コンテキストとディペンデンシーインジェクション) をベースとし、エクステンションフレームワークを備えているので、機能の拡張、およびフレームワークの設定、起動、アプリケーションへの統合が可能です。
Quarkus は、コンテナーファーストという手法で Java アプリケーションをビルドします。この手法により、Java で書かれたマイクロサービスベースのアプリケーションのビルドが大幅に容易になるほか、これらのアプリケーションがサーバーレスコンピューティングフレームワークで実行している関数を呼び出すことができるようになります。これにより、Quarkus アプリケーションのメモリーフットプリントは小さくなり、起動時間は高速化されます。
第2章 Apache Maven および Quarkus リンクのコピーリンクがクリップボードにコピーされました!
Apache Maven は、ソフトウェアプロジェクトの作成、管理、ビルドを行う Java アプリケーションの開発で使用される分散型ビルド自動化ツールです。Maven は Project Object Model (POM) ファイルと呼ばれる標準の設定ファイルを使用して、プロジェクトの定義やビルドプロセスの管理を行います。POM ファイルは、モジュールおよびコンポーネントの依存関係、ビルドの順番、結果となるプロジェクトパッケージングのターゲットを定義し、XML ファイルを使用して出力します。この結果、プロジェクトが適切かつ統一された状態でビルドされるようになります。
Maven リポジトリー
Maven リポジトリーには、Java ライブラリー、プラグイン、その他のビルドアーティファクトが格納されています。デフォルトのパブリックリポジトリーは Maven 2 Central Repository ですが、複数の開発チームの間で共通のアーティファクトを共有する目的で、社内のプライベートおよび内部リポジトリーを使用することができます。また、サードパーティーのリポジトリーも利用できます。
Quarkus プロジェクトでオンライン Maven リポジトリーを使用するか、または Red Hat ビルドの Quarkus の Maven リポジトリーをダウンロードすることができます。
Maven プラグイン
Maven プラグインは、1 つ以上のゴールを達成する POM ファイルの定義された部分です。Quarkus アプリケーションは以下の Maven プラグインを使用します。
-
Quarkus Maven プラグイン (
quarkus-maven-plugin): Maven による Quarkus プロジェクトの作成を実現、uber-JAR ファイルの生成をサポート、そして開発モードを提供します。 -
Maven Surefire プラグイン (
maven-surefire-plugin): ビルドライフサイクルのテストフェーズで使用され、アプリケーションでユニットテストを実行します。プラグインは、テストレポートが含まれるテキストファイルと XML ファイルを生成します。
2.1. オンラインリポジトリーの Maven の settings.xml ファイルの設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーの settings.xml ファイルを設定して、オンライン Quarkus リポジトリーを Quarkus Maven プロジェクトで使用することができます。これは推奨される手法です。リポジトリーマネージャーまたは共有サーバー上のリポジトリーと使用する Maven 設定は、プロジェクトの制御および管理を行いやすくします。
Maven の settings.xml ファイルを変更してリポジトリーを設定する場合、変更はすべての Maven プロジェクトに適用されます。
手順
テキストエディターまたは統合開発環境 (IDE) で、Maven の
~/.m2/settings.xmlファイルを開きます。注記~/.m2/ディレクトリーにsettings.xmlファイルがない場合は、$MAVEN_HOME/.m2/conf/ディレクトリーのsettings.xmlファイルを~/.m2/ディレクトリーにコピーします。以下の行を
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
2.2. Quarkus Maven リポジトリーのダウンロードおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
オンライン Maven リポジトリーを使用しない場合は、Quarkus Maven リポジトリーをダウンロードして設定し、Maven を使用して Quarkus アプリケーションを作成できます。Quarkus Maven リポジトリーには、Java 開発者がアプリケーションのビルドに使用する必要があるものが数多く含まれています。この手順では、settings.xml ファイルを編集して Quarkus Maven リポジトリーを設定する方法を説明します。
Maven の settings.xml ファイルを変更してリポジトリーを設定する場合、変更はすべての Maven プロジェクトに適用されます。
手順
- Red Hat カスタマーポータルの Software Downloads ページから、Quarkus Maven リポジトリーの ZIP ファイルをダウンロードします (ログインが必要です)。
- ダウンロードしたアーカイブを展開します。
-
~/.m2/ディレクトリーに移動し、テキストエディターまたは統合開発環境 (IDE) で Maven のsettings.xmlファイルを開きます。 以下の行を
settings.xmlファイルの<profiles>要素に追加します。ここで、QUARKUS_MAVEN_REPOSITORYはダウンロードした Quarkus Maven リポジトリーのパスになります。QUARKUS_MAVEN_REPOSITORYの形式は、file://$PATHでなければなりません (例:file:///home/userX/rh-quarkus-1.3.4.SP1-maven-repository/maven-repository)。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
Maven リポジトリーに古いアーティファクトが含まれる場合は、プロジェクトをビルドまたはデプロイしたときに以下のいずれかの Maven エラーメッセージが表示されることがあります。ここで、ARTIFACT_NAME は不明なアーティファクトの名前、PROJECT_NAME はビルドを試みているプロジェクトの名前になります。
-
Missing artifact PROJECT_NAME -
[ERROR] Failed to execute goal on project ARTIFACT_NAME; Could not resolve dependencies for PROJECT_NAME
この問題を解決するには、~/.m2/repository ディレクトリーにあるローカルリポジトリーのキャッシュバージョンを削除し、最新の Maven アーティファクトを強制的にダウンロードします。
第3章 コマンドラインでの Quarkus プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインで Quarkus Maven プラグインを使用し、コマンドラインで属性および値を指定するか、インタラクティブモードでプラグインを使用して、Quarkus プロジェクトを作成できます。作成されるプロジェクトには以下の要素が含まれます。
- Maven の構造
- 関連するユニットテスト
-
アプリケーションの起動後に
http://localhost:8080でアクセス可能なランディングページ -
src/main/dockerのDockerfileファイルの例 - アプリケーション設定ファイル
手順
コマンドターミナルで以下のコマンドを入力し、Maven が JDK 11 を使用していること、そして Maven のバージョンが 3.6.2 以上であることを確認します。
mvn --version
mvn --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 上記のコマンドで JDK 11 が返されない場合は、JDK 11 へのパスを PATH 環境変数に追加し、上記のコマンドを再度入力します。
Quarkus Maven プラグインを使用して新規プロジェクトを作成するには、以下のいずれかの方法を使用します。
以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドで、以下の値を置き換えます。
-
PROJECT_GROUP_ID: プロジェクトの一意識別子。 -
PROJECT_ARTIFACT_ID: プロジェクトおよびプロジェクトディレクトリーの名前。 -
CLASSNAME: 生成されたリソースの完全修飾名 (例:org.acme.quarkus.sample.HelloResource)。
-
インタラクティブモードでプロジェクトを作成します。
mvn io.quarkus:quarkus-maven-plugin:1.3.4.Final-redhat-00004:create
mvn io.quarkus:quarkus-maven-plugin:1.3.4.Final-redhat-00004:createCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、必要な属性値を入力します。
注記以下のコマンドを入力し、プロジェクト属性のデフォルト値を使用してプロジェクトを作成することもできます。
mvn io.quarkus:quarkus-maven-plugin:1.3.4.Final-redhat-00004:create -B以下の表は、
createコマンドで定義できる属性を一覧表示しています。Expand 属性 デフォルト値 説明 projectGroupIdorg.acme.sampleプロジェクトの一意識別子。
projectArtifactIdなし
プロジェクトおよびプロジェクトディレクトリーの名前。
projectArtifactIdを指定しないと、Maven プラグインはインタラクティブモードを起動します。ディレクトリーがすでに存在する場合、生成は失敗します。projectVersion1.0-SNAPSHOTプロジェクトのバージョン。
platformGroupIdio.quarkusプラットフォームのグループ ID。既存のプラットフォームのデフォルト値はすべて、
io.quarkusです。ただし、デフォルト値は変更することができます。platformArtifactIdquarkus-universe-bomプラットフォーム BOM のアーティファクト ID。ローカルにビルドされた Quarkus を使用するには、
quarkus-universe-bomをpom.xmlファイルに追加します。platformVersionプラットフォームの最新バージョン
プロジェクトに使用するプラットフォームのバージョン。バージョン範囲を指定でき、Maven プラグインは最新バージョンを使用します。
classNameなし
生成されたリソースの完全修飾名。アプリケーションの作成後、REST エンドポイントは以下の URL で公開されます。
http://localhost:8080/$pathデフォルトの
pathを使用する場合、URL はhttp://localhost:8080/helloになります。path/helloリソースパス (
classNameを設定した場合のみ)。extensions[]
プロジェクトに追加するエクステンションのコンマ区切りリスト。
デフォルトでは、Quarkus Maven プラグインは最新の quarkus-universe-bom ファイルを使用します。この BOM は、アプリケーションからエクステンションを参照し、依存関係バージョンを合わせるためにエクステンションを集約します。オフラインの場合、Quarkus Maven プラグインは、ローカルで利用可能な quarkus-universe-bom の最新バージョンを使用します。Maven が quarkus-universe-bom バージョン 2.0 以前を見つけると、quarkus-universe-bom をベースにしたプラットフォームを使用します。
第4章 pom.xml ファイルの設定による Quarkus プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
Maven POM XML ファイルを設定して Quarkus プロジェクトを作成できます。
手順
-
テキストエディターで
pom.xmlファイルを開きます。 Quarkus GAV (Group、Artifact、Version) を追加し、
quarkus-universe-bomファイルを使用して、Quarkus の異なる依存関係のバージョンを省略します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus Maven プラグインを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 Java コンパイラーの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Quarkus Maven プラグインはコンパイラーフラグを maven-compiler-plugin プラグインから javac コマンドに渡します。
開発モードで使用されるコンパイラーフラグをカスタマイズするには、configuration セクションを plugin ブロックに追加し、compilerArgs プロパティーを設定します。source、target、jvmArgs を設定することもできます。たとえば、--enable-preview を JVM と javac の両方に渡すには、以下の行を追加します。
第6章 Quarkus アプリケーションを使用した Java エクステンションのインストールおよび管理 リンクのコピーリンクがクリップボードにコピーされました!
Java エクステンションを使用して、アプリケーションの機能を拡張し、フレームワークの設定、起動、アプリケーションへの統合が可能です。この手順では、エクステンションを検索して Quarkus プロジェクトに追加する方法を説明します。
前提条件
- Quarkus Maven プロジェクトがあること。
手順
- Quarkus プロジェクトディレクトリーに移動します。
利用可能なエクステンションを一覧表示するには、以下のコマンドを入力します。
./mvnw quarkus:list-extensions
./mvnw quarkus:list-extensionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトにエクステンションを追加するには、以下のコマンドを入力します。ここで、
EXTENSIONは、追加するエクステンションの Group、Artifact、Version (GAV) に置き換えます。./mvnw quarkus:add-extension -Dextensions="EXTENSION"
./mvnw quarkus:add-extension -Dextensions="EXTENSION"Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、Agroal エクステンションを追加するには、以下のコマンドを入力します。
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-agroal"
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-agroal"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のエクステンションを検索するには、
-Dextensions=の後にエクステンション名または名前の一部を入力します。以下の例では、名前にjdbc、agroal、およびnon-exist-entのテキストが含まれるエクステンションを検索します。./mvnw quarkus:add-extension -Dextensions=jdbc,agroal,non-exist-ent
./mvnw quarkus:add-extension -Dextensions=jdbc,agroal,non-exist-entCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、以下の結果を返します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のテキスト文字列が返すすべてのエクステンションをインストールするには、
-Dextensions=の後にエクステンション名または名前の一部を入力します。以下の例では、hibernate-で始まるすべてのエクステンションを検索し、インストールします。./mvnw quarkus:add-extension -Dextensions="hibernate-*"
./mvnw quarkus:add-extension -Dextensions="hibernate-*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第7章 Quarkus プロジェクトの IDE へのインポート リンクのコピーリンクがクリップボードにコピーされました!
テキストエディターで Quarkus プロジェクトを開発することは可能ですが、統合開発環境 (IDE) を使用した方がプロジェクトの作業がしやすいかもしれません。以下の手順では、Quarkus プロジェクトを特定の IDE にインポートする方法を説明します。
前提条件
- Quarkus Maven プロジェクトがあること。
手順
以下のいずれかのセクションの手順を実行します。
CodeReady Studio または Eclipse
- CodeReady Studio または Eclipse で、File → Import とクリックします。
- Maven → Existing Maven Project と選択します。
- 次の画面で、プロジェクトのルートロケーションを選択します。見つかったモジュールの一覧が表示されます。
- 生成されたプロジェクトを選択し、Finish をクリックします。
アプリケーションを起動するには、新しいターミナルウィンドウに以下のコマンドを入力します。
./mvnw compile quarkus:dev
./mvnw compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
IntelliJ
IntelliJ で、以下のタスクのいずれかを実行します。
- File → New → Project From Existing Sources と選択します。
- Welcome ページで Import project を選択します。
- プロジェクトの root ディレクトリーを選択します。
- Import project from external model を選択してから、Maven を選択します。
- オプションを確認して Next をクリックします。
- Finish をクリックします。
アプリケーションを起動するには、新しいターミナルウィンドウに以下のコマンドを入力します。
./mvnw compile quarkus:dev
./mvnw compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Apache NetBeans
- File → Open Project と選択します。
-
プロジェクトの
rootディレクトリーを選択します。 - Open Project クリックします。
アプリケーションを起動するには、新しいターミナルウィンドウに以下のコマンドを入力します。
./mvnw compile quarkus:dev
./mvnw compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Visual Studio Code
- Java Extension Pack をインストールします。
- Visual Studio Code でプロジェクトディレクトリーを開きます。プロジェクトは Maven プロジェクトとしてロードされます。
第8章 Quarkus プロジェクトの出力の設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをビルドする前に、application.properties ファイルのアプリケーションプロパティーのデフォルト値を変更することで、ビルドコマンドの出力を制御できます。
前提条件
- Quarkus Maven プロジェクトがあること。
手順
-
テキストエディターで
application.propertiesファイルを開きます。 変更するプロパティーの値を編集し、ファイルを保存します。
以下の表は、変更可能なプロパティーをまとめたものです。
Expand プロパティー 説明 タイプ デフォルト quarkus.package.main-classアプリケーションのエントリーポイント。ほとんどの場合、この値は変更する必要があります。
string
io.quarkus.runner.GeneratedMainquarkus.package.type要求された出力タイプ。
string
jarquarkus.package.uber-jarJava ランナーを uber-JAR としてパックすべきかどうか。
boolean
falsequarkus.package.manifest.add-implementation-entries実装情報をランナー JAR ファイルの
MANIFEST.MFファイルに含めるかどうか。boolean
truequarkus.package.user-configured-ignored-entries出力アーティファクトにコピーしてはならないファイル。
string (list)
quarkus.package.runner-suffixランナー JAR ファイルに適用される接尾辞。
string
-runnerquarkus.package.output-directoryアプリケーションビルドの出力フォルダー。これは、ビルドシステムのターゲットディレクトリーと相対的に解決されます。
string
quarkus.package.output-name最終的なアーティファクトの名前。
string
第9章 Quarkus アプリケーションのテスト リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Quarkus アプリケーションをテストする場合、Maven は test 設定プロファイルを使用します。ただし、Maven Surefire プラグインを使用して、テスト用のカスタム設定プロファイルを作成することができます。
前提条件
- Apache Maven を使用して作成した Quarkus プロジェクトがあること。
手順
以下の例を編集し、テスト要件を満たします。
PROFILE_NAMEは、テストプロファイルの名前に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 Quarkus アプリケーションのビルドクラスパスツリーのロギング リンクのコピーリンクがクリップボードにコピーされました!
Quarkus ビルドプロセスでは、アプリケーションで使用するエクステンションのデプロイメント依存関係が、元のアプリケーションクラスパスに追加されます。ビルドクラスパスに含まれる依存関係およびバージョンを確認することができます。quarkus-bootstrap Maven プラグインには、アプリケーションのビルド依存関係ツリーを表示する build-tree ゴールが含まれます。
前提条件
- Quarkus Maven アプリケーションがあること。
手順
プラグイン設定を
pom.xmlファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションのビルド依存関係ツリーを一覧表示するには、以下のコマンドを入力します。
./mvnw quarkus-bootstrap:build-tree
./mvnw quarkus-bootstrap:build-treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドの出力は、以下のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
mvn dependency:tree コマンドは、アプリケーションのランタイム依存関係のみを表示します。
第11章 Quarkus 開発モードの使用 リンクのコピーリンクがクリップボードにコピーされました!
開発モードはバックグラウンドコンパイルによるホットデプロイメントを可能にします。つまり、Java ファイルまたはリソースファイルを変更してブラウザーを更新すると、変更が自動的に反映されます。これは、設定プロパティーファイルなどのリソースファイルでも同じく反映されます。
前提条件
- Quarkus Maven アプリケーションがあること。
手順
開発モードで Quarkus を起動するには、Quarkus アプリケーションの
pom.xmlファイルが含まれるディレクトリーで以下のコマンドを入力します。./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションに変更を加え、ファイルを保存します。
ブラウザーを更新して、ワークスペースのスキャンをトリガーします。
変更が検出されると、Java ファイルが再コンパイルされ、アプリケーションが再デプロイされます。その後、要求は再デプロイされたアプリケーションによって処理されます。コンパイルまたはデプロイメントに問題がある場合には、エラーページが表示されます。
開発モードでは、デバッガーがアクティベートされ、ポート
5005をリッスンします。任意手順: アプリケーションの実行前にデバッガーが割り当てられるのを待つには、
-Dsuspendを追加します。./mvnw quarkus:dev -Dsuspend
./mvnw quarkus:dev -DsuspendCopy to Clipboard Copied! Toggle word wrap Toggle overflow 任意手順: デバッガーが実行されないようにするには、
-Ddebug=falseを追加します。./mvnw quarkus:dev -Ddebug=false
./mvnw quarkus:dev -Ddebug=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第12章 Quarkus プロジェクトのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
Quarkus が開発モードで起動すると、デバッグはデフォルトで有効になります。デバッガーは、JVM を一時停止せずにポート 5005 でリッスンします。
前提条件
- Quarkus Maven プロジェクトがあること。
手順
デバッグを制御するには、以下のいずれかの方法を使用します。
システムプロパティーを使用したデバッガーの制御
以下の
debugシステムプロパティーの値の 1 つを変更します。ここで、PORTはデバッガーがリッスンするポートです。-
false: JVM はデバッグモードを無効にして開始します。 -
true: JVM はデバッグモードで開始され、ポート5005でリッスンしています。 -
client: JVM はクライアントモードで起動され、localhost:5005への接続を試みます。 -
PORT: JVM はデバッグモードで開始され、PORTをリッスンしています。
-
suspendシステムプロパティーの値を変更します。このプロパティーは、Quarkus がデバッグモードで開始する際に使用されます。-
yまたはtrue: デバッグモードの JVM の起動が一時停止します。 -
nまたはfalse: デバッグモードの JVM は一時停止せずに起動します。
-
コマンドラインからのデバッガーの制御
JVM を使用してデバッグモードで Quarkus アプリケーションを起動するには、以下のコマンドを入力します。
./mvnw compile quarkus:dev -Ddebug
./mvnw compile quarkus:dev -DdebugCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
localhost:5005にデバッガーを割り当てます。
第13章 その他のリソース リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Container Platform での Quarkus Maven アプリケーションのデプロイに関する詳細は、『Red Hat OpenShift Container Platform での Quarkus アプリケーションのデプロイ』 を参照してください。
- Maven Surefire プラグインの詳細は、Apache Maven Project の Web サイトを参照してください。