-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Migration Guide 2.0
The minimal JDK version supported by Quarkus 2.0 is JDK 11.
JDK 8 is not supported anymore.
Quarkus @ConfigProperties
has been deprecated in favour of SmallRye Config @ConfigMapping
. Please, refer to the Mapping Configuration to Objects.
Mapping of YAML Configuration to complex objects has been removed from io.quarkus.arc.config.ConfigProperties
. Please use io.smallrye.config.ConfigMapping
instead which is a safer alternative.
smallrye.jwt.sign.key-location
has been renamed to smallrye.jwt.sign.key.location
and smallrye.jwt.encrypt.key-location
- to smallrye.jwt.encrypt.key.location
.
Avro has been integrated with the Quarkus code generation mechanism. To use it with Maven, make sure you have the generate-code
goal enabled for the quarkus-maven-plugin
, it should be enabled by default if you created your project fairly recently.
For Gradle no specific task is required.
This replaces the need to use Avro plugin, such as the avro-maven-plugin
, for projects that use Avro.
The value app.quarkus.io/vcs-url
is no longer converted to an http
url and will now match the url of the origin
remote. Users that need the prefer the use of the http
protocol over git
, will have to configure that on git level.
Services that are exposing http ports are now automatically mapped to port 80
. The change makes the generated Service
easier to consume by external tools, or services as knowledge of the actual container port is no longer needed by consumers.
This may affect services that were using the service dns name and container port combination to communicate with each other.
The Kubernetes Client has been upgraded to 5.4, which contains some breaking changes.
Please refer to the release notes for more details.
The io.quarkus.grpc.runtime.annotations.GrpcService
annotation was renamed to io.quarkus.grpc.GrpcClient
. Furthermore, the @GrpcClient.value()
is optional and the service name can be derived from the annotated element.
gRPC service classes now have to be annotated with @io.quarkus.grpc.GrpcService
instead of @javax.inject.Singleton
.
The deprecated annotations from the io.quarkus.qute.api
package were removed. All occurrences of @io.quarkus.qute.api.CheckedTemplate
should be replaced with @io.quarkus.qute.CheckedTemplate
and occurrences of @io.quarkus.qute.api.ResourcePath
should be replaced with @io.quarkus.qute.Location
.
Checked templates require type-safe expressions by default, i.e. expressions that can be validated at build time. It's possible to use @CheckedTemplate(requireTypeSafeExpressions = false)
to relax this requirement.
Multiple NamespaceResolver
instances can be registered for the same namespace provided that each declares a different priority.
The deprecated property quarkus.quartz.force-start
was removed. Use quarkus.quartz.start-mode=forced
instead.
The deprecated config value StoreType.DB
was removed. quarkus.quartz.store-type=db
should be replaced with quarkus.quartz.store-type=jdbc-cmt
.
Anonymous requests to public resources with no matching Keycloak Authorization policies will now correctly return HTTP 200
status as opposed to 401
. Adding DISABLED
Keycloak Authorization policies in such cases is no longer necessary.
In 2.0, we removed some features that were deprecated for a while.
When we introduced the new /q
mounting point for /health
, /metrics
, and other non-application endpoints,
the quarkus.http.redirect-to-non-application-root-path
configuration property was provided to revert back to the previous behavior of not prefixing them with /q
.
The property was deprecated and is now removed.
It is possible to achieve the previous behavior by explicitly setting endpoints to be absolute instead of relative. For instance, the Health endpoint can be forced to be available at /health
instead of /q/health
by setting quarkus.smallrye-health.root-path=/health
.
As of Quarkus 2.0, when quarkus.container-image.username
and quarkus.container-image.password
Quarkus no longer uses credentials from other locations (like the docker config on the file system)
The configuration property datasource.reactive.max-size
is now applied to the whole pool. In previous versions there was a Pool for each thread, leading to applying a separate max limit to each pool in each thread. There is a single Pool shared among all threads now, which is more intuitive to use and configure.