Re-augment a Quarkus Application
What is augmentation?
Quarkus 应用程序配置可能包含两种类型的配置选项:
-
* 构建时间选项在应用程序构建过程中处理;
-
* 运行时选项,可在应用程序构建后但在启动之前进行调整。
增强是应用程序构建过程的一个阶段,在此阶段,根据应用程序构建时间配置对应用程序的字节码进行优化。以前在 Jakarta EE 服务器上部署 EAR 文件时发生的初始化步骤(如解析静态配置、创建代理实例等)现在在增强时发生。增强后添加的 CDI bean 将无法正常工作(因为缺少代理类),并且在增强后更改的构建时间属性(例如 quarkus.datasource.db-kind
)将会被忽略。构建时间属性在 list of all configuration options 中用锁图标 () 标记。无论您使用配置文件还是任何其他方式来覆盖属性都无关紧要。
重新增强是为不同的构建时间配置重新创建增强输出的过程
When is re-augmentation useful?
重新增强对于您的应用程序用户希望能够更改其一些构建时间属性的情况很有用。例如更改数据库驱动程序或开启或关闭特性(例如 OpenTelemetry 或 Config Consul)。如果只有两个或三个构建时间属性依赖于用户环境,您可以考虑提供应用程序的备用版本。但是,如果有更多这样的属性,您可能更愿意提供一个可变 jar,并让您的用户为他们的环境重新增强应用程序。请注意,您无法对包类型 mutable-jar
使用本机映像。考虑后果以及您还有哪些其他选择!
除非您怀念启动服务器需要几分钟的时间,并且您可以在服务器准备好之前享受一杯咖啡,否则在运行时进行重新增强并不是一个好主意。
How to re-augment a Quarkus application
为了运行增强步骤,您需要所用 Quarkus 扩展的部署 JAR。这些 JAR 仅存在于 mutable-jar
发行版中。这意味着您需要使用 quarkus.package.jar.type=mutable-jar
构建您的应用程序。mutable-jar
发行版与 fast-jar
发行版相同,不同之处在于附加的文件夹 quarkus-app/lib/deployment
,其中包含部署 JAR 及其依赖项(以及一些类加载器配置)。
默认情况下,如果构建时属性在运行时已更改,您会收到一个警告。您可以设置 |
构建工具提供的构建时配置(Maven 中的 properties``pom.xml
或 Gradle 中的 gradle.properties
)quarkus
命名空间中的将成为 mutable-jar
分发的一部分,包括来自 quarkus
的配置,它们引用机密或密码。请不要在构建工具配置文件中包含敏感信息。
2. Re-augment your application with a different build time configuration
为了用不同的构建时属性重新扩充您的 Quarkus 应用程序,请使用所需的配置启动应用程序,再加上设置为 true
的 quarkus.launch.rebuild
系统属性。
以下示例将 quarkus.datasource.db-kind
更改为 mysql
。为了实现这一点,mysql-extension
必须已包含在构建中。扩充只能使用编译时已存在的扩展。
java -jar -Dquarkus.launch.rebuild=true -Dquarkus.datasource.db-kind=mysql target/quarkus-app/quarkus-run.jar
使用系统属性、环境变量、配置还是外部配置文件并不重要。当前配置将用于扩充( |