使用 Apache Maven 开发和编译 Quarkus 应用程序
指南
摘要
前言 复制链接链接已复制到粘贴板!
作为应用程序开发人员,您可以使用红帽构建的 Quarkus 创建在基于 OpenShift 和无服务器环境中运行的 Java 编写的基于微服务的应用。编译到原生可执行文件的应用程序具有小内存占用和启动时间。
本指南介绍了如何使用 Apache Maven 插件创建 Quarkus 项目。
先决条件
安装 OpenJDK(JDK)11,将
JAVA_HOME环境变量设置为指定 Java SDK 的位置。- 登录红帽客户门户网站,从 Software Downloads 页面下载 Open JDK 的 Red Hat build。
已安装 Apache Maven 3.6.2 或更高版本。
- 从 Apache Maven Project 网站下载 Maven。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们非常感谢您对我们的技术内容提供反馈,并鼓励您告诉我们您的想法。如果您想添加评论,提供见解、纠正拼写错误甚至询问问题,您可以在文档中直接这样做。
您必须有一个红帽帐户并登录到客户门户网站。
要从客户门户网站提交文档反馈,请执行以下操作:
- 选择 Multi-page HTML 格式。
- 点文档右上角的 反馈 按钮。
- 突出显示您要提供反馈的文本部分。
- 点高亮文本旁的添加反馈对话框。
- 在页面右侧的文本框中输入您的反馈,然后单击 Submit。
每次提交反馈时,我们都会自动创建跟踪问题。打开在点 Submit 后显示的链接,并开始监视问题或添加更多注释。
感谢您的宝贵反馈。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 Red Hat build of Quarkus 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 是一个 Kubernetes 原生 Java 堆栈,经过优化以用于容器和 Red Hat OpenShift Container Platform。Quarkus 旨在处理常见 Java 标准、框架和库,如 Eclipse MicroProfile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA)、Spring、Infquid 和 Apache Camel。
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 中央存储库,但存储库可以是专有仓库和内部的,以在开发团队之间共享常见工件。也可从第三方获取存储库。
您可以将在线 Maven 存储库与 Quarkus 项目一起使用,也可以下载红帽 Quarkus Maven 存储库构建。
Maven 插件
Maven 插件是定义实现一个或多个目标的 POM 文件的组成部分。Quarkus 应用程序使用以下 Maven 插件:
-
Quarkus Maven 插件(
quarkus-maven-plugin): Enables 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 项目。
流程
在文本编辑器中打开 Maven
~/.m2/settings.xml文件或集成开发环境(IDE)。注意如果
~/.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 项目。
流程
- 从红帽客户门户网站的 Software Downloads 页面下载 Quarkus Maven repository ZIP 文件(需要登录)。
- 展开下载的存档。
-
将目录改为
~/.m2/目录,并在文本编辑器或集成开发环境(IDE)中打开 Mavensettings.xml文件。 将您下载的 Quarkus Maven 存储库的路径添加到
settings.xml文件的<profiles> 元素中。Quarkus Maven 存储库路径的格式必须是file://$PATH,例如file:///home/userX/rh-quarkus-1.11.7.GA-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& gt; 是缺少的工件的名称,< ;project_name > 是您要构建的项目的名称:
-
缺少工件 <project_name> -
[ERROR] Failed on project <artifact_name>; Could not resolve dependencies for <project_name>
要解决这个问题,删除位于 ~/.m2/repository 目录中的本地存储库的缓存版本,以强制下载最新的 Maven 工件。
第 3 章 在命令行中创建 Quarkus 项目 复制链接链接已复制到粘贴板!
您可以在命令行中使用 Quarkus Maven 插件来创建 Quarkus 项目,方法是在命令行中提供属性和值,也可以在交互模式中使用插件来创建 Quarkus 项目。生成的项目将包含以下元素:
- Maven 结构
- 关联的单元测试
-
在启动应用程序后,一个可在
http://localhost:8080上访问的登录页面 -
src/main/docker中的 JVM 和原生模式的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.11.7.Final-redhat-00009:create
mvn io.quarkus:quarkus-maven-plugin:1.11.7.Final-redhat-00009:createCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示时,输入 required 属性值。
注意另外,您可以通过输入以下命令来使用项目属性的默认值创建项目:
mvn io.quarkus:quarkus-maven-plugin:1.11.7.Final-redhat-00009:create -B下表列出了您可以使用
create命令定义的属性:Expand 属性 默认值 描述 projectGroupIdorg.acme.sample项目的唯一标识符。
projectArtifactIdnone
您的项目和项目目录的名称。如果您没有指定
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如果您使用默认
路径,则 URL 为http://localhost:8080/hello。path/hello只有设置了
className时,资源路径。extensions[]
要添加到项目( comma)中的扩展列表。
默认情况下,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 Maven 插件的版本
-
Quarkus BOM 的
groupID、artifactID和版本 - Maven Surefire 插件的版本
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 Quarkus GAV(组、工件和版本),并使用
quarkus-universe-bom文件省略不同 Quarkus 依赖项的版本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 Quarkus Maven 插件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要构建原生应用程序,请添加特定的原生配置集,其包含 Maven Surefire 和 Maven Failsafe 插件并启用
原生软件包类型:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在其名称中包含
IT的测试已注释@NativeImageTest对原生可执行文件运行。
第 5 章 使用 code.quarkus.redhat.com 创建 Quarkus Maven 项目 复制链接链接已复制到粘贴板!
作为应用程序开发人员,您可以使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目,并自动添加并配置要在应用程序中使用的扩展。另外,code.quarkus.redhat.com 会自动管理将项目编译到原生可执行文件所需的配置参数。
本节帮助您完成生成 Quarkus Maven 项目的过程,包括:
- 指定应用程序的基本详情。
- 选择您要包含在项目中的扩展。
- 使用您的项目文件生成可下载归档。
- 使用自定义命令编译和启动应用程序。
先决条件
- 使用 Web 浏览器。
流程
- 使用 Web 浏览器导航至 https://code.quarkus.redhat.com
指定项目的基本详情:
-
输入项目的组名称。名称的格式遵循 Java 软件包命名约定,如
org.acme。 -
输入您要用于从项目生成的 Maven 工件的名称,如
code-with-quarkus。 选择您要用于编译和启动应用程序的构建工具。您选择的构建工具:
- 生成的项目的目录结构。
- 生成的项目中使用的配置文件格式。
用于编译和启动您的应用程序的自定义构建脚本和命令会在您生成项目后为您显示 code.quarkus.redhat.com。
注意红帽只支持使用 code.quarkus.redhat.com 创建 Quarkus Maven 项目。红帽不支持生成 Gradle 项目。
-
输入项目的组名称。名称的格式遵循 Java 软件包命名约定,如
指定应用程序项目的其他详情:
- 选择 Configure more options 以显示包含更多应用程序详情的字段。
-
输入项目生成的工件中使用的版本。此字段的默认值为 15000
SNAPSHOT。建议使用 语义版本,但如果您愿意,可以使用不同类型的版本。 选择是否想将 code.quarkus.redhat.com 添加示例代码到项目中。当您从扩展列表中添加带有
图标标记的扩展时,您可以在生成项目时启用这个选项为这些扩展自动创建示例类文件和资源文件。当您没有添加提供示例代码的任何扩展时,这个选项不会影响您生成的项目。
注意code.quarkus.redhat.com 自动使用 Quarkus 的最新发行版本。您可以在生成项目后手动更改
pom.xml文件中的 BOM 版本。
从扩展列表中选择您要在应用程序中使用的扩展。所选扩展作为 Quarkus 应用程序的依赖项包括,其版本由 Quarkus 平台管理,以确保其兼容性。
您可以启用选项,为使用
图标标记的扩展自动生成示例代码。
请注意,红帽为列表上的单个扩展提供了不同级别的支持,这由每个扩展名称旁的标签指定: https://access.redhat.com/articles/3348731
- 红帽完全支持 SUPPORTED 扩展用于生产环境中的企业应用程序。
- TECH-PREVIEW 扩展受红帽在生产环境中的支持,在 技术预览功能支持范围 下受到红帽的支持。
- 红帽在生产环境中不支持 DEV-SUPPORT 扩展,但红帽提供的核心功能则由红帽开发人员用于开发新的应用程序。
- 红帽不支持在生产环境中使用的未标记扩展。
DEPRECATED 扩展计划由提供相同功能的较新的技术或实现替代。
您可以扩展每个扩展旁的 overflow 菜单( '{}')来访问可用于的额外选项:
- 在命令行中使用 Quarkus maven 插件,为现有项目添加扩展。
-
复制 XML 代码片段,将扩展添加到项目的
pom.xml文件中。 -
获取每个扩展的
groupId、artifactId和版本。 打开扩展指南。
- 选择 Generate your application 确认您的选择并显示覆盖屏幕,其中包含包含您生成的项目的存档的下载链接。overlay 屏幕还显示可用于编译和启动应用程序的自定义命令。
- 选择 Download the ZIP,以使用生成的项目文件将存档保存到您的计算机中。
- 提取存档的内容。
进入包含您提取的项目文件的目录:
cd <directory_name>
cd <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以开发模式编译并启动应用程序:
./mvnw compile quarkus:dev
./mvnw compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 配置 Java 编译器 复制链接链接已复制到粘贴板!
默认情况下,Quarkus Maven 插件从 maven-compiler-plugin 插件将编译器标志传递给 javac 命令。
流程
要自定义开发模式中使用的编译器标志,请将
配置部分添加到插件块,并设置编译器Args属性。您还可以设置源、目标和jvmArgs。例如,要将--enable-preview传递给 JVM 和javac,请添加以下行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 7 章 使用 Quarkus 应用程序安装和管理 Java 扩展 复制链接链接已复制到粘贴板!
您可以使用 Java 扩展来扩展应用程序的功能,并在应用程序中配置、启动和集成框架。此流程演示了如何查找和向 Quarkus 项目添加扩展。
先决条件
- 您有一个 Quarkus Maven 项目。
流程
- 进入 Quarkus 项目目录。
要列出可用的扩展,请输入以下命令:
./mvnw quarkus:list-extensions
./mvnw quarkus:list-extensionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要为项目添加扩展,输入以下命令
<extension>是您要添加的扩展扩展名的组、工件、版本(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
第 8 章 将您的 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。
- 选择项目根目录。
- 选择 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。
-
选择
项目根目录。 - 单击 Open Project。
要启动应用程序,在新的终端窗口中输入以下命令:
./mvnw compile quarkus:dev
./mvnw compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Visual Studio Code
- 安装 Java 扩展包.
- 在 Visual Studio Code 中,打开您的项目目录。该项目作为 Maven 项目加载。
第 9 章 配置 Quarkus 项目输出 复制链接链接已复制到粘贴板!
在构建应用程序前,您可以通过更改 application.properties 文件中的应用属性默认值来控制 build 命令的输出。
先决条件
- 您有一个 Quarkus Maven 项目。
流程
-
在文本编辑器中打开
application.properties文件。 编辑要更改并保存文件的属性值。
下表列出了您可以更改的属性:
Expand 属性 描述 类型 默认 quarkus.package.main-class应用程序的入口点。在大多数情况下,您应该更改此值。
字符串
io.quarkus.runner.GeneratedMainquarkus.package.type请求的输出类型。
字符串
jarquarkus.package.uber-jarJava 运行程序是否应该显示为 uber-JAR。
布尔值
falsequarkus.package.manifest.add-implementation-entries是否应该将实施信息包含在 runner JAR 文件的
MANIFEST.MF文件中。布尔值
truequarkus.package.user-configured-ignored-entries不应复制到输出工件中的文件。
字符串(列表)
quarkus.package.runner-suffix应用到 runner JAR 文件的后缀。
字符串
-runnerquarkus.package.output-directory应用构建的输出文件夹。这个问题相对于构建系统目标目录的解析。
字符串
quarkus.package.output-name最终工件的名称。
字符串
第 10 章 测试 Quarkus 应用程序 复制链接链接已复制到粘贴板!
默认情况下,当您测试 Quarkus 应用程序时,Maven 会使用 测试测试 配置配置集。但是,您可以使用 Maven Surefire 插件为测试创建自定义配置配置文件。
先决条件
- 您已使用 Apache Maven 创建的 Quarkus 项目。
流程
编辑以下示例,以满足您的测试要求,其中 <
;profile_name> 是测试配置集的名称:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您不能以原生模式使用自定义测试配置配置集。原生测试始终使用 prod 配置集运行。
第 11 章 记录 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 命令只显示应用程序的运行时依赖项
第 12 章 生成原生可执行文件 复制链接链接已复制到粘贴板!
您可以使用 Podman 或 Docker 等容器运行时从 Quarkus 应用程序生成原生可执行文件。Quarkus 使用构建器镜像生成二进制可执行文件,您可将其与 Red Hat Universal Base Images RHEL8-UBI 和 RHEL8-UBI 一同使用。红帽构建的 Quarkus 1.11 使用 registry.access.redhat.com/quarkus/mandrel-20-rhel8:20.3 作为 quarkus.builder-image 属性的默认值。
应用程序的原生可执行文件包含应用程序代码、所需库、Java API 以及虚拟机(VM)的更精简版本。较小的虚拟机基础提高了应用程序的启动时间,并生成最小磁盘占用量。
流程
打开 Getting Started 项目
pom.xml文件,并验证它是否包含原生配置集:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用 Quarkus
原生配置集可让您运行原生的可执行文件和原生镜像测试。使用以下方法之一构建原生可执行文件:
使用 Docker 构建原生可执行文件:
./mvnw package -Pnative -Dquarkus.native.container-build=true
./mvnw package -Pnative -Dquarkus.native.container-build=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Podman 构建原生可执行文件:
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这些命令
在目标目录中创建getting-started-*-runner二进制文件。重要将 Quarkus 应用程序编译到原生可执行文件的过程中会占用大量内存。您可以通过设置
quarkus.native-image-xmx配置属性来限制原生编译过程中使用的内存量。设置低内存限制可能会增加构建时间。如需了解更多详细信息,请参阅 原生可执行文件配置属性。
运行原生可执行文件:
./target/getting-started-*-runner
./target/getting-started-*-runnerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当您构建原生的可执行程序时,启用了
prod配置集,并使用prod配置集运行 Quarkus 原生测试。您可以使用quarkus.test.native-image-profile属性更改它。
12.1. 手动创建容器 复制链接链接已复制到粘贴板!
本节演示了如何使用您的应用程序为 Linux X86_64 手动创建容器镜像。当使用 Quarkus 原生容器生成原生镜像时,它会创建一个以 Linux X86_64 操作系统为目标的可执行文件。如果您的主机操作系统与这个操作系统不同,您将无法直接运行该二进制文件,您需要手动创建容器。
您的 Quarkus Getting Started 项目在 src/main/docker 目录中包含 Dockerfile.native,包含以下内容:
流程
使用以下方法之一构建原生 Linux 可执行文件:
使用 Docker 构建原生可执行文件:
./mvnw package -Pnative -Dquarkus.native.container-build=true
./mvnw package -Pnative -Dquarkus.native.container-build=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Podman 构建原生可执行文件:
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下方法之一构建容器镜像:
使用 Docker 构建容器镜像:
docker build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
docker build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Podman 构建容器镜像
podman build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
podman build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行容器:
使用 Docker 运行容器:
docker run -i --rm -p 8080:8080 quarkus-quickstart/getting-started
docker run -i --rm -p 8080:8080 quarkus-quickstart/getting-startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Podman 运行容器:
podman run -i --rm -p 8080:8080 quarkus-quickstart/getting-started
podman run -i --rm -p 8080:8080 quarkus-quickstart/getting-startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 13 章 测试原生可执行文件 复制链接链接已复制到粘贴板!
测试以原生模式运行的应用程序,以测试原生可执行文件的功能。使用 @NativeImageTest 注释构建原生可执行文件,并根据 http 端点运行测试。
流程
打开
pom.xml文件,再验证原生配置集是否包含以下元素:Copy to Clipboard Copied! Toggle word wrap Toggle overflow failsafe-maven-plugin运行集成测试,并指示生成的原生可执行文件的位置。打开
src/test/java/acme/quickstart/NativeGreetingResourceIT.java文件,并验证它是否包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行测试:
./mvnw verify -Pnative
./mvnw verify -PnativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例显示了这个命令的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意Quarkus 等待 60 秒,让原生镜像在自动进行原生测试前启动。您可以使用
quarkus.test.native-image-wait-time系统属性更改这个持续时间。您可以使用以下命令扩展等待时间,其中 <
duration> 是等待时间(以秒为单位):./mvnw verify -Pnative -Dquarkus.test.native-image-wait-time=<duration>
./mvnw verify -Pnative -Dquarkus.test.native-image-wait-time=<duration>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 14 章 使用 Quarkus 开发模式 复制链接链接已复制到粘贴板!
开发模式支持使用背景编译进行热部署,这意味着当您修改 Java 文件或资源文件时,刷新浏览器,更改会自动生效。这也适用于资源文件,如配置属性文件。
先决条件
- 您有一个 Quarkus Maven 应用程序。
流程
要在 development 模式中启动 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
第 15 章 调试 Quarkus 项目 复制链接链接已复制到粘贴板!
当 Quarkus 在开发模式中启动时,默认启用调试。调试器侦听端口 5005,而不暂停 JVM。
先决条件
- 您有一个 Quarkus Maven 项目。
流程
使用以下方法之一控制调试:
通过系统属性控制调试器
更改
debug系统属性的以下值之一,其中PORT是调试器侦听的端口:-
false:JVM 在禁用调试模式时启动。 -
true:JVM 在调试模式中启动,并在端口5005上侦听。 -
客户端:JVM 以客户端模式启动并尝试连接到localhost:5005。 -
PORT:JVM 在调试模式中启动,并在PORT上侦听。
-
更改
挂起的系统属性的值。当 Quarkus 在调试模式中启动时使用此属性。-
Y或true:调试模式 JVM 启动挂起。 -
n或false:调试模式 JVM 在不暂停的情况下启动。
-
从命令行控制调试器
要使用 JVM 在 debug 模式下启动 Quarkus 应用程序,请输入以下命令:
./mvnw compile quarkus:dev -Ddebug
./mvnw compile quarkus:dev -DdebugCopy to Clipboard Copied! Toggle word wrap Toggle overflow
为特定主机域启用调试器
在开发模式中,仅针对您在 localhost 上执行的应用程序启用调试器。您必须在其他主机上手动启用调试。
使用
debugHost选项启用特定主机上的调试。您必须将 <host-ip-address> 替换为您要启用调试的主机的 IP 广告。./mvnw compile quarkus:dev -DdebugHost=<host-ip-address>
./mvnw compile quarkus:dev -DdebugHost=<host-ip-address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在所有主机上启用调试,将 <
host-ip-address>替换为0.0.0。./mvnw compile quarkus:dev -DdebugHost=0.0.0.0
./mvnw compile quarkus:dev -DdebugHost=0.0.0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow