1.4. 原生可执行配置属性


配置属性定义如何生成原生可执行文件。您可以使用 application.properties 文件配置 Quarkus 应用程序。

配置属性

下表列出了您可以设置的配置属性来定义如何生成原生可执行文件:

Expand

属性

描述

类型

default

quarkus.native.debug.enabled

在单独的 .debug 文件中启用调试并生成调试符号。与 quarkus.native.container-build 一起使用时,红帽构建的 Quarkus 只支持 Red Hat Enterprise Linux 或其他 Linux 发行版,因为它们包含 binutils 软件包,它会安装从原生镜像分割调试信息的 objcopy 工具。

布尔值

false

quarkus.native.resources.excludes

以逗号分隔的 glob 列表,以匹配不应添加到原生镜像的资源路径。

字符串列表

 

quarkus.native.additional-build-args

传递给构建过程的其他参数。

字符串列表

 

quarkus.native.enable-http-url-handler

启用 HTTP URL 处理程序,您可以在其中为 HTTP URL 进行 URL.openConnection ()

布尔值

true

quarkus.native.enable-https-url-handler

启用 HTTPS URL 处理程序,您可以在其中为 HTTPS URL 进行 URL.openConnection ()

布尔值

false

quarkus.native.enable-all-security-services

将所有安全服务添加到原生镜像。

布尔值

false

quarkus.native.add-all-charsets

将所有字符集添加到原生镜像。这会增加镜像大小。

布尔值

false

quarkus.native.graalvm-home

包含 GraalVM 发行版的路径。

string

${GRAALVM_HOME:}

quarkus.native.java-home

包含 JDK 的路径。

file

${java.home}

quarkus.native.native-image-xmx

用于生成原生镜像的最大 Java 堆。

string

 

quarkus.native.debug-build-process

在运行原生镜像构建前,等待调试器附加到构建过程。对于那些熟悉 GraalVM 内部的用户,这是一个高级选项。

布尔值

false

quarkus.native.publish-debug-build-process-port

如果 debug-build-processtrue,则在使用 Docker 构建时发布调试端口。

布尔值

true

quarkus.native.cleanup-server

重启原生镜像服务器。

布尔值

false

quarkus.native.enable-isolates

启用隔离以提高内存管理。

布尔值

true

quarkus.native.enable-fallback-images

如果原生镜像失败,则创建基于 JVM 的回退镜像。

布尔值

false

quarkus.native.enable-server

使用原生镜像服务器。这可加快编译速度,但可能会导致因为缓存无效问题而丢失更改。

布尔值

false

quarkus.native.auto-service-loader-registration

自动注册所有 META-INF/services 条目。

布尔值

false

quarkus.native.dump-proxies

转储所有代理的字节码进行检查。

布尔值

false

quarkus.native.container-build

使用容器运行时的构建。Docker 被默认使用。

布尔值

false

quarkus.native.builder-image

要构建镜像的 Docker 镜像。

string

registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1

quarkus.native.container-runtime

用于构建镜像的容器运行时。例如,Docker。

string

 

quarkus.native.container-runtime-options

传递给容器运行时的选项。

字符串列表

 

quarkus.native.enable-vm-inspection

在镜像中启用虚拟机内省。

布尔值

false

quarkus.native.full-stack-traces

在镜像中启用完整堆栈跟踪。

布尔值

true

quarkus.native.enable-reports

生成调用路径以及包含的软件包、类或方法的报告。

布尔值

false

quarkus.native.report-exception-stack-traces

报告具有完整堆栈追踪的例外情况。

布尔值

true

quarkus.native.report-errors-at-runtime

在运行时报告错误。如果您使用不支持的功能,这可能会导致应用程序在运行时失败。

布尔值

false

quarkus.native.resources.includes

以逗号分隔的 glob 列表,以匹配应添加到原生镜像的资源路径。使用斜杠(/)字符作为所有平台上的路径分隔符。通配不能以斜杠开头。例如,如果您的源树中有 src/main/resources/ignored.pngsrc/main/resources/foo/selected.png,则依赖项 JAR 之一包含一个 bar/some.txt 文件,quarkus.native.resources.includes 设置为 foo/,bar/237.txt,文件 src/main/resources/foo/selected.pngbar/some.txt 将包含在原生镜像中。虽然 src/main/resources/ignored. png 不会被包含。如需更多信息,请参阅下表,它列出了支持的 glob 功能。

字符串列表

 

在构建配置中,如果要包含共享项目中通用模式或位置的一组文件或资源,您可以使用 glob 模式。

例如,如果您有一个包含多个配置文件的目录,您可以使用 glob 模式来包含该目录中的所有文件。

例如:

quarkus.native.resources.includes = my/config/files/*
Copy to Clipboard Toggle word wrap

以下示例显示了以逗号分隔的 glob 列表,以匹配要添加到原生镜像的资源路径。这些模式会导致将 classpath 上找到的任何 .png 镜像添加到原生镜像,以及在文件夹栏下以 .txt 结尾的所有文件,即使嵌套在子目录中:

 quarkus.native.resources.includes = **/*.png,bar/**/*.txt
Copy to Clipboard Toggle word wrap

支持的 glob 功能

下表列出了支持的 glob 功能和描述:

Expand

character

功能描述

*

匹配不包含斜杠(/)的可能字符序列。

**

匹配可能包含斜杠(/)的可能字符序列。

?

匹配一个字符,但不匹配斜杠。

[abc]

匹配括号中指定的字符,但不匹配斜杠。

[a-z]

匹配括号中指定的范围内的一个字符,但不匹配斜杠。

[!abc]

匹配括号中未指定的字符; 不匹配斜杠。

[!a-z]

匹配括号中指定的范围之外的一个字符; 不匹配斜杠。

{one,two,three}

匹配以逗号分开的修改错误令牌;令牌可以包含通配符、嵌套更改和范围。

\

转义字符。escaping 有三个级别: application.properties 解析器、MicroProfile Config list converter 和 Glob 解析器。所有三个级别都使用反斜杠作为转义字符。

将红帽构建的 Quarkus 应用程序编译到原生可执行文件,会在分析和优化过程中消耗大量内存。您可以通过设置 quarkus.native.native-image-xmx 配置属性来限制原生编译过程中使用的内存量。设置较低的内存限值可能会增加构建时间。

流程

  • 使用以下方法之一为 quarkus.native.native-image-xmx 属性设置值,在原生镜像构建过程中限制内存消耗:

    • 使用 application.properties 文件:

      quarkus.native.native-image-xmx=<maximum_memory>
      Copy to Clipboard Toggle word wrap
    • 设置系统属性:

      mvn package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.native-image-xmx=<maximum_memory>
      Copy to Clipboard Toggle word wrap

      此命令使用 Docker 构建原生可执行文件。要使用 Podman,请添加 the -Dquarkus.native.container-runtime=podman 参数。

注意

例如,要将内存限制设置为 8 GB,请输入 quarkus.native.native-image-xmx=8g。该值必须是 1024 的倍数,且大于 2MB。附加字母 mM 以表示 MB 或 gG 以指示千兆字节。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat