One month after the release of Quarkus 3.18.0, version 3.19.0 was released in February 2025. This is the last release before the next long-term support (LTS) version, 3.20.0, which is now feature complete and scheduled to be released on March 26th according to the Release Planning guide. The new release uses the new @ConfigMapping
infrastructure, UBI 9 images and Mockito’s inline strategy.
With this release, all core extensions use the @ConfigMapping
infrastructure, introduced in 2022, except for some compatibility exceptions. The legacy configuration classes could only be used in extensions, while the new solution works for both extensions and applications.
Configuration mapping requires a public interface annotated with @ConfigMapping
. Consider the following example:
@ConfigMapping(prefix = "my")
public interface MyConfiguration {
String question();
int answer();
}
The values can be set, for example, in an application.properties
file with the following content:
my.value=What is the Answer to the Ultimate Question of Life, the Universe, and Everything
my.answer=42
Lastly, the MyConfiguration
interface can be injected into a CDI-aware bean:
class MyBean {
@Inject
MyConfiguration myConfiguration;
public void myMethod() {
String question = myConfiguration.question();
String answer = myConfiguration.answer();
}
}
Applications consuming the older configuration classes should be modified and extension developers are encouraged to start using the new configuration approach. More information can be found in the Mapping configuration to objects guide.
Red Hat Universal Base Image 9 (UBI 9) is now used instead of UBI 8 as the default image to build and run applications. The UBI serves as the base layer for containerized applications and is freely available, but only supported by Red Hat through subscriptions for Red Hat products. UBI 8 support is ending which might raise maintenance and security concerns.
Builder images automatically use UBI 9, optionally a specific image can be specified with:
-Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi9-quarkus-mandrel-builder-image:23.1.5.0-Final-java21
Runtime images in JVM mode should use the following base image:
registry.access.redhat.com/ubi9/openjdk-21-runtime:1.21
While runtime images in native mode should use the UBI minimal:
registry.access.redhat.com/ubi9-minimal:9.5
Or, alternatively, use the UBI Quarkus micro image:
quay.io/quarkus/ubi9-quarkus-micro-image:2.0
The quarkus-junit5-mockito
dependency now uses the inline strategy by default instead of the previously used subclass strategy. The new strategy allows mocking constructors, static methods and final classes and final fields. Mockito 5, released in 2023, started using the inline strategy instead of the subclass strategy.
A new bridge allows pushing Micrometer metrics to OpenTelemetry. The quarkus-micrometer-opentelemetry
extension can be added, for example, via the CLI with the following command:
quarkus extension add micrometer-opentelemetry
The extension enables Micrometer by default as well as OpenTelemetry tracing, metrics and logs. More information and configuration options are described in the Micrometer and OpenTelemetry Extension guide.
The Quarkus CLI may be used to update to the latest version with the following command:
quarkus update
More information about the required changes and the complete list of features can be found in the Migration Guide for 3.19.0.
Quarkus releases LTS versions, like the upcoming 3.20.0, every six months, which are maintained and receive bug and security fixes for one year. The micro releases, such as 3.8.1, have been released without a schedule. This will change into micro LTS releases every two months starting from version 3.15.0. LTS micro releases only contain security fixes and low risk bug fixes. In case a critical CVE is detected, an emergency micro release version is provided next to the regular two monthly releases.