diff --git a/bom/application/pom.xml b/bom/application/pom.xml
index 6272b828e022c..f59b7f5115ce0 100644
--- a/bom/application/pom.xml
+++ b/bom/application/pom.xml
@@ -51,7 +51,7 @@
2.0
3.1.1
2.2.0
- 3.5.2
+ 3.5.4
4.1.0
4.0.0
3.9.0
@@ -121,7 +121,7 @@
1.0.1.Final
2.2.3.Final
3.5.1.Final
- 4.5.2
+ 4.5.3
4.5.14
4.4.16
4.1.5
@@ -255,7 +255,16 @@
pom
import
-
+
+
+
+ io.quarkus
+ quarkus-bom-dev-ui
+ ${project.version}
+ pom
+ import
+
+
diff --git a/bom/dev-ui/pom.xml b/bom/dev-ui/pom.xml
new file mode 100644
index 0000000000000..be2f1cc71d1ae
--- /dev/null
+++ b/bom/dev-ui/pom.xml
@@ -0,0 +1,280 @@
+
+ 4.0.0
+
+ io.quarkus
+ quarkus-project
+ 999-SNAPSHOT
+ ../../pom.xml
+
+ quarkus-bom-dev-ui
+ Quarkus - BOM - Dev UI
+ pom
+
+ Dependency management for dev-ui. Importable by third party extension developers.
+
+
+ 24.3.5
+ 3.1.2
+ 4.0.4
+ 3.1.2
+ 1.2.0
+ 2.0.7
+ 2.0.4
+ 2.1.2
+ 2.0.6
+ 3.5.1
+ 1.11.2
+ 1.4.0
+ 1.7.5
+ 1.7.0
+ 5.4.3
+ 2.1.0
+ 1.8.2
+ 2.4.0
+
+ 2.15.3
+ 17.7.2
+ 8.0.1
+ 3.1.2
+ 2.0.5
+ 2.1.1
+ 4.2.3
+ 5.0.8
+ 21.1.1
+ 6.0.1
+ 7.0.0
+ 8.0.0
+ 3.0.0
+ 5.0.1
+ 4.3.0
+ 2.0.1
+ 1.1.4
+
+
+
+
+
+
+ org.mvnpm.at.vaadin
+ router
+ ${vaadin-router.version}
+ runtime
+
+
+ org.mvnpm
+ path-to-regexp
+ ${path-to-regexp.version}
+ runtime
+
+
+
+ org.mvnpm.at.mvnpm
+ vaadin-webcomponents
+ ${vaadin.version}
+ runtime
+
+
+ org.mvnpm.at.vaadin
+ vaadin-usage-statistics
+ ${vaadin-usage-statistics.version}
+ runtime
+
+
+ org.mvnpm.at.vaadin
+ vaadin-development-mode-detector
+ ${vaadin-development-mode-detector.version}
+ runtime
+
+
+ org.mvnpm.at.polymer
+ polymer
+ ${polymer.version}
+ runtime
+
+
+ org.mvnpm.at.webcomponents
+ shadycss
+ ${shadycss.version}
+ runtime
+
+
+ org.mvnpm.at.open-wc
+ dedupe-mixin
+ ${dedupe-mixin.version}
+ runtime
+
+
+
+
+ org.mvnpm
+ lit
+ ${lit.version}
+ runtime
+
+
+ org.mvnpm.at.lit
+ reactive-element
+ ${reactive-element.version}
+ runtime
+
+
+ org.mvnpm
+ lit-element
+ ${lit-element.version}
+ runtime
+
+
+ org.mvnpm
+ lit-html
+ ${lit-html.version}
+ runtime
+
+
+ org.mvnpm.at.lit-labs
+ ssr-dom-shim
+ ${ssr-dom-shim.version}
+ runtime
+
+
+ org.mvnpm.at.types
+ trusted-types
+ ${trusted-types.version}
+ runtime
+
+
+ org.mvnpm
+ lit-element-state
+ ${lit-state.version}
+ runtime
+
+
+
+
+ org.mvnpm
+ echarts
+ ${echarts.version}
+ runtime
+
+
+
+
+ org.mvnpm.at.hpcc-js
+ wasm
+ ${hpcc-js-wasm.version}
+ runtime
+
+
+ org.mvnpm
+ yargs
+ ${yargs.version}
+ runtime
+
+
+ org.mvnpm
+ cliui
+ ${cliui.version}
+ runtime
+
+
+ org.mvnpm
+ escalade
+ ${escalade.version}
+ runtime
+
+
+ org.mvnpm
+ get-caller-file
+ ${get-caller-file.version}
+ runtime
+
+
+ org.mvnpm
+ require-directory
+ ${require-directory.version}
+ runtime
+
+
+ org.mvnpm
+ string-width
+ ${string-width.version}
+ runtime
+
+
+ org.mvnpm
+ y18n
+ ${y18n.version}
+ runtime
+
+
+ org.mvnpm
+ yargs-parser
+ ${yargs-parser.version}
+ runtime
+
+
+ org.mvnpm
+ strip-ansi
+ ${strip-ansi.version}
+ runtime
+
+
+ org.mvnpm
+ wrap-ansi
+ ${wrap-ansi.version}
+ runtime
+
+
+ org.mvnpm
+ emoji-regex
+ ${emoji-regex}
+ runtime
+
+
+ org.mvnpm
+ is-fullwidth-code-point
+ ${is-fullwidth-code-point.version}
+ runtime
+
+
+ org.mvnpm
+ ansi-regex
+ ${ansi-regex.version}
+ runtime
+
+
+ org.mvnpm
+ ansi-styles
+ ${ansi-styles.version}
+ runtime
+
+
+ org.mvnpm
+ color-convert
+ ${color-convert.version}
+ runtime
+
+
+ org.mvnpm
+ color-name
+ ${color-name.version}
+ runtime
+
+
+
+
+ org.mvnpm.at.vanillawc
+ wc-codemirror
+ ${wc-codemirror.version}
+ runtime
+
+
+
+
+ org.mvnpm
+ es-module-shims
+ ${es-module-shims.version}
+ runtime
+
+
+
+
diff --git a/build-parent/pom.xml b/build-parent/pom.xml
index 12723478a4892..29a07126bf6f2 100644
--- a/build-parent/pom.xml
+++ b/build-parent/pom.xml
@@ -174,26 +174,6 @@
1.1.0
true
-
-
- 24.3.0
- 3.1.0
- 4.0.2
- 3.1.0
- 1.1.2
- 2.0.7
- 2.0.2
- 2.1.2
- 2.0.6
- 3.5.1
- 1.11.2
- 1.4.0
- 1.7.5
- 1.7.0
- 5.4.3
- 2.1.0
- 1.8.2
- 2.4.0
@@ -393,229 +373,6 @@
-
-
-
- org.mvnpm.at.vaadin
- router
- ${vaadin-router.version}
- runtime
-
-
- org.mvnpm
- path-to-regexp
- ${path-to-regexp.version}
- runtime
-
-
-
- org.mvnpm.at.mvnpm
- vaadin-webcomponents
- ${vaadin.version}
- runtime
-
-
- org.mvnpm.at.vaadin
- vaadin-usage-statistics
- ${vaadin-usage-statistics.version}
- runtime
-
-
- org.mvnpm.at.vaadin
- vaadin-development-mode-detector
- ${vaadin-development-mode-detector.version}
- runtime
-
-
- org.mvnpm.at.polymer
- polymer
- ${polymer.version}
- runtime
-
-
- org.mvnpm.at.webcomponents
- shadycss
- ${shadycss.version}
- runtime
-
-
- org.mvnpm.at.open-wc
- dedupe-mixin
- ${dedupe-mixin.version}
- runtime
-
-
-
-
- org.mvnpm
- lit
- ${lit.version}
- runtime
-
-
- org.mvnpm.at.lit
- reactive-element
- ${reactive-element.version}
- runtime
-
-
- org.mvnpm
- lit-element
- ${lit-element.version}
- runtime
-
-
- org.mvnpm
- lit-html
- ${lit-html.version}
- runtime
-
-
- org.mvnpm.at.lit-labs
- ssr-dom-shim
- ${ssr-dom-shim.version}
- runtime
-
-
- org.mvnpm.at.types
- trusted-types
- ${trusted-types.version}
- runtime
-
-
- org.mvnpm
- lit-element-state
- ${lit-state.version}
- runtime
-
-
-
-
- org.mvnpm
- echarts
- ${echarts.version}
- runtime
-
-
-
-
- org.mvnpm.at.hpcc-js
- wasm
- 2.14.1
- runtime
-
-
- org.mvnpm
- yargs
- 17.7.2
- runtime
-
-
- org.mvnpm
- cliui
- 8.0.1
- runtime
-
-
- org.mvnpm
- escalade
- 3.1.1
- runtime
-
-
- org.mvnpm
- get-caller-file
- 2.0.5
- runtime
-
-
- org.mvnpm
- require-directory
- 2.1.1
- runtime
-
-
- org.mvnpm
- string-width
- 4.2.3
- runtime
-
-
- org.mvnpm
- y18n
- 5.0.8
- runtime
-
-
- org.mvnpm
- yargs-parser
- 21.1.1
- runtime
-
-
- org.mvnpm
- strip-ansi
- 6.0.1
- runtime
-
-
- org.mvnpm
- wrap-ansi
- 7.0.0
- runtime
-
-
- org.mvnpm
- emoji-regex
- 8.0.0
- runtime
-
-
- org.mvnpm
- is-fullwidth-code-point
- 3.0.0
- runtime
-
-
- org.mvnpm
- ansi-regex
- 5.0.1
- runtime
-
-
- org.mvnpm
- ansi-styles
- 4.3.0
- runtime
-
-
- org.mvnpm
- color-convert
- 2.0.1
- runtime
-
-
- org.mvnpm
- color-name
- 1.1.4
- runtime
-
-
-
-
- org.mvnpm.at.vanillawc
- wc-codemirror
- ${wc-codemirror.version}
- runtime
-
-
-
-
- org.mvnpm
- es-module-shims
- ${es-module-shims.version}
- runtime
-
diff --git a/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/AppCDSBuildStep.java b/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/AppCDSBuildStep.java
index c9ca54d8d6262..1b9bb96b800f5 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/AppCDSBuildStep.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/AppCDSBuildStep.java
@@ -212,11 +212,18 @@ private List dockerRunCommands(OutputTargetBuildItem outputTarget, Strin
command.add(outputTarget.getOutputDirectory().toAbsolutePath().toString() + ":" + CONTAINER_IMAGE_BASE_BUILD_DIR
+ ":z");
if (SystemUtils.IS_OS_LINUX) {
- String uid = getLinuxID("-ur");
- String gid = getLinuxID("-gr");
- if (uid != null && gid != null && !uid.isEmpty() && !gid.isEmpty()) {
- command.add("--user");
- command.add(uid + ":" + gid);
+ if (containerRuntime.isDocker() && containerRuntime.isRootless()) {
+ Collections.addAll(command, "--user", String.valueOf(0));
+ } else {
+ String uid = getLinuxID("-ur");
+ String gid = getLinuxID("-gr");
+ if (uid != null && gid != null && !uid.isEmpty() && !gid.isEmpty()) {
+ Collections.addAll(command, "--user", uid + ":" + gid);
+ if (containerRuntime.isPodman() && containerRuntime.isRootless()) {
+ // Needed to avoid AccessDeniedExceptions
+ command.add("--userns=keep-id");
+ }
+ }
}
}
command.add("-w");
diff --git a/core/processor/src/main/java/io/quarkus/annotation/processor/Constants.java b/core/processor/src/main/java/io/quarkus/annotation/processor/Constants.java
index d9f2f9ac2fd02..6418a4128edb8 100644
--- a/core/processor/src/main/java/io/quarkus/annotation/processor/Constants.java
+++ b/core/processor/src/main/java/io/quarkus/annotation/processor/Constants.java
@@ -92,7 +92,7 @@ final public class Constants {
public static final String DURATION_NOTE_ANCHOR = String.format("duration-note-anchor-{%s}",
SUMMARY_TABLE_ID_VARIABLE);
public static final String MEMORY_SIZE_NOTE_ANCHOR = "memory-size-note-anchor";
- public static final String MORE_INFO_ABOUT_TYPE_FORMAT = " link:#%s[icon:question-circle[], title=More information about the %s format]";
+ public static final String MORE_INFO_ABOUT_TYPE_FORMAT = " link:#%s[icon:question-circle[title=More information about the %s format]]";
public static final String DURATION_INFORMATION = String.format(Constants.MORE_INFO_ABOUT_TYPE_FORMAT,
Constants.DURATION_NOTE_ANCHOR, Duration.class.getSimpleName());
public static final String MEMORY_SIZE_INFORMATION = String.format(Constants.MORE_INFO_ABOUT_TYPE_FORMAT,
diff --git a/docs/src/main/asciidoc/amqp-reference.adoc b/docs/src/main/asciidoc/amqp-reference.adoc
index 44aa061a1958f..85355b4b98e0d 100644
--- a/docs/src/main/asciidoc/amqp-reference.adoc
+++ b/docs/src/main/asciidoc/amqp-reference.adoc
@@ -369,7 +369,7 @@ mp.messaging.incoming.people-out.link-name=people
More details about the AMQP Address model can be found in the https://activemq.apache.org/components/artemis/documentation/2.0.0/address-model.html[Artemis documentation].
-[#blocking-processing]
+[[blocking-processing]]
=== Execution model and Blocking processing
Reactive Messaging invokes your method on an I/O thread.
diff --git a/docs/src/main/asciidoc/amqp.adoc b/docs/src/main/asciidoc/amqp.adoc
index d70dd0e501512..17cc76e3268a3 100644
--- a/docs/src/main/asciidoc/amqp.adoc
+++ b/docs/src/main/asciidoc/amqp.adoc
@@ -372,7 +372,7 @@ version: '2'
services:
artemis:
- image: quay.io/artemiscloud/activemq-artemis-broker:0.1.2
+ image: quay.io/artemiscloud/activemq-artemis-broker:1.0.25
ports:
- "8161:8161"
- "61616:61616"
diff --git a/docs/src/main/asciidoc/azure-functions-http.adoc b/docs/src/main/asciidoc/azure-functions-http.adoc
index a02be3bfb5bd6..1affe1b2bbdd6 100644
--- a/docs/src/main/asciidoc/azure-functions-http.adoc
+++ b/docs/src/main/asciidoc/azure-functions-http.adoc
@@ -85,7 +85,7 @@ The Azure Functions `host.json` deployment descriptor is automatically
generated, but if you need to override it, declare it in the root directory of the project and
rerun the build when you are ready.
-[#config-azure-paths]
+[[config-azure-paths]]
== Configuring Root Paths
The default route prefix for an Azure Function is `/api`. All of your Jakarta REST, Servlet, Reactive Routes, and xref:funqy-http.adoc[Funqy HTTP] endpoints must
diff --git a/docs/src/main/asciidoc/building-native-image.adoc b/docs/src/main/asciidoc/building-native-image.adoc
index 6e3712384afd5..f2f79557e668f 100644
--- a/docs/src/main/asciidoc/building-native-image.adoc
+++ b/docs/src/main/asciidoc/building-native-image.adoc
@@ -379,7 +379,7 @@ It is also possible to re-run the tests against a native executable that has alr
If the process cannot find the native image for some reason, or you want to test a native image that is no longer in the
target directory you can specify the executable with the `-Dnative.image.path=` system property.
-[#container-runtime]
+[[container-runtime]]
== Creating a Linux executable without GraalVM installed
IMPORTANT: Before going further, be sure to have a working container runtime (Docker, podman) environment. If you use Docker
@@ -415,7 +415,7 @@ These are regular Quarkus config properties, so if you always want to build in a
it is recommended you add these to your `application.properties` in order to avoid specifying them every time.
====
-[#tip-quarkus-native-remote-container-build]
+[[tip-quarkus-native-remote-container-build]]
[TIP]
====
If you see the following invalid path error for your application JAR when trying to create a native executable using a container build, even though your JAR was built successfully, you're most likely using a remote daemon for your container runtime.
@@ -548,7 +548,7 @@ CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
The UBI minimal image is bigger than the micro one mentioned above.
It contains more utilities such as the `microdnf` package manager.
-[#multistage-docker]
+[[multistage-docker]]
=== Using a multi-stage Docker build
The previous section showed you how to build a native executable using Maven or Gradle, but it requires you to have created the native executable first.
diff --git a/docs/src/main/asciidoc/cache.adoc b/docs/src/main/asciidoc/cache.adoc
index 83ddd47318cb9..af3ebc278725a 100644
--- a/docs/src/main/asciidoc/cache.adoc
+++ b/docs/src/main/asciidoc/cache.adoc
@@ -273,7 +273,7 @@ Congratulations! You just added application data caching to your Quarkus applica
Do you want to learn more about the Quarkus application data caching abilities?
The following sections will show you everything there is to know about it.
-[#annotations-api]
+[[annotations-api]]
== Caching using annotations
Quarkus offers a set of annotations that can be used in a CDI managed bean to enable caching abilities.
@@ -327,7 +327,7 @@ method annotated with `@CacheResult` or `@CacheInvalidate`.
This annotation is optional and should only be used when some method arguments are NOT part of the cache key.
-[#cache-keys-building-logic]
+[[cache-keys-building-logic]]
=== Cache keys building logic
Cache keys are built by the annotations API using the following logic:
@@ -489,7 +489,7 @@ public class CachedService {
<3> This key generator is not a CDI bean.
<4> The `@CacheKey` annotation will be ignored when the `foo` cache data is invalidated, but `param1` will be the cache key when the `bar` cache data is invalidated.
-[#programmatic-api]
+[[programmatic-api]]
== Caching using the programmatic API
Quarkus also offers a programmatic API which can be used to store, retrieve or delete values from any cache declared using the annotations API.
@@ -966,7 +966,7 @@ public class CacheClearer {
}
----
-[#negative-cache]
+[[negative-cache]]
== Negative caching and nulls
Sometimes one wants to cache the result of an (expensive) remote call.
diff --git a/docs/src/main/asciidoc/cli-tooling.adoc b/docs/src/main/asciidoc/cli-tooling.adoc
index d363697be730a..74255a9653b13 100644
--- a/docs/src/main/asciidoc/cli-tooling.adoc
+++ b/docs/src/main/asciidoc/cli-tooling.adoc
@@ -476,6 +476,12 @@ quarkus ext add kubernetes health
[SUCCESS] ✅ Extension io.quarkus:quarkus-smallrye-health has been installed
----
+You can install all extensions which match a glob pattern:
+[source,shell]
+----
+quarkus ext add smallrye-*
+----
+
==== Removing extensions
The Quarkus CLI can remove one or more extensions from your project with the `remove`/`rm`
diff --git a/docs/src/main/asciidoc/container-image.adoc b/docs/src/main/asciidoc/container-image.adoc
index 2fd411e028c52..2ec5a802577ca 100644
--- a/docs/src/main/asciidoc/container-image.adoc
+++ b/docs/src/main/asciidoc/container-image.adoc
@@ -19,7 +19,7 @@ Quarkus provides extensions for building (and pushing) container images. Current
== Container Image extensions
-[#jib]
+[[jib]]
=== Jib
The extension `quarkus-container-image-jib` is powered by https://github.com/GoogleContainerTools/jib[Jib] for performing container image builds.
@@ -106,7 +106,7 @@ this property needs to be known very early on in the build process.
Quarkus supports generating and including an link:https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#application-class-data-sharing[Application Class Data Sharing] archive when generating a container image using Jib.
See the xref:appcds.adoc[AppCDS documentation] for more details.
-[#docker]
+[[docker]]
=== Docker
The extension `quarkus-container-image-docker` is using the Docker binary and the generated Dockerfiles under `src/main/docker` in order to perform Docker builds.
@@ -120,7 +120,7 @@ The `quarkus-container-image-docker` extension is capable of https://docs.docker
NOTE: `docker buildx build` ONLY supports https://docs.docker.com/engine/reference/commandline/buildx_build/#load[loading the result of a build] to `docker images` when building for a single platform. Therefore, if you specify more than one argument in the `quarkus.docker.buildx.platform` property, the resulting images will not be loaded into `docker images`. If `quarkus.docker.buildx.platform` is omitted or if only a single platform is specified, it will then be loaded into `docker images`.
-[#openshift]
+[[openshift]]
=== OpenShift
The extension `quarkus-container-image-openshift` is using OpenShift binary builds in order to perform container builds inside the OpenShift cluster.
@@ -137,7 +137,7 @@ OpenShift builds require creating a `BuildConfig` and two `ImageStream` resource
The creation of such objects is being taken care of by the Quarkus Kubernetes extension.
-[#buildpack]
+[[buildpack]]
=== Buildpack
The extension `quarkus-container-image-buildpack` is using buildpacks in order to perform container image builds.
@@ -248,7 +248,7 @@ In addition to the generic container image options, the `container-image-jib` al
include::{generated-dir}/config/quarkus-container-image-jib.adoc[opts=optional, leveloffset=+1]
-[#DockerOptions]
+[[DockerOptions]]
=== Docker Options
In addition to the generic container image options, the `container-image-docker` also provides the following options:
diff --git a/docs/src/main/asciidoc/deploying-to-kubernetes.adoc b/docs/src/main/asciidoc/deploying-to-kubernetes.adoc
index 382e724a36d14..7ad56e3a51c86 100644
--- a/docs/src/main/asciidoc/deploying-to-kubernetes.adoc
+++ b/docs/src/main/asciidoc/deploying-to-kubernetes.adoc
@@ -22,7 +22,7 @@ Finally, when either one of container image extensions is present (see the xref:
include::{includes}/prerequisites.adoc[]
* Access to a Kubernetes cluster (Minikube is a viable option)
-[#kubernetes]
+[[kubernetes]]
== Kubernetes
Let's create a new project that contains both the Kubernetes and Jib extensions:
@@ -400,7 +400,7 @@ quarkus.kubernetes.annotations.foo=bar
quarkus.kubernetes.annotations."app.quarkus/id"=42
----
-[#env-vars]
+[[env-vars]]
==== Environment variables
Kubernetes provides multiple ways of defining environment variables:
@@ -538,7 +538,7 @@ A conflict between two definitions, e.g. mistakenly assigning both a value and s
Similarly, two redundant definitions, e.g. defining an injection from the same secret twice, will not cause an issue but will indeed report a warning to let you know that you might not have intended to duplicate that definition.
-[#env-vars-backwards]
+[[env-vars-backwards]]
===== Backwards compatibility
Previous versions of the Kubernetes extension supported a different syntax to add environment variables. The older syntax is still supported but is deprecated, and it's advised that you migrate to the new syntax.
@@ -1084,7 +1084,7 @@ The full list of the Kubernetes client configuration properties is provided belo
:no-duration-note: true
include::{generated-dir}/config/quarkus-kubernetes-client.adoc[opts=optional, leveloffset=+1]
-[#openshift]
+[[openshift]]
=== OpenShift
One way to deploy an application to OpenShift is to use s2i (source to image) to create an image stream from the source and then deploy the image stream:
@@ -1195,7 +1195,7 @@ The OpenShift resources can be customized in a similar approach with Kubernetes.
:no-duration-note: true
include::{generated-dir}/config/quarkus-openshift-openshift-config.adoc[opts=optional, leveloffset=+1]
-[#knative]
+[[knative]]
=== Knative
To enable the generation of Knative resources, you need to include Knative in the target platforms:
diff --git a/docs/src/main/asciidoc/deploying-to-openshift.adoc b/docs/src/main/asciidoc/deploying-to-openshift.adoc
index 57a53873faf38..b1a50d3aba7b6 100644
--- a/docs/src/main/asciidoc/deploying-to-openshift.adoc
+++ b/docs/src/main/asciidoc/deploying-to-openshift.adoc
@@ -92,7 +92,7 @@ include::{includes}/devtools/build.adoc[]
TIP: If you want to test your application immediately then set the `quarkus.openshift.route.expose` config property to `true` to <>, e.g. add `-Dquarkus.openshift.route.expose=true` to the command above.
-[#re-deploy-with-service-binding]
+[[re-deploy-with-service-binding]]
NOTE: When using `DeploymentConfig` and xref:deploying-to-kubernetes.adoc#service_binding[Service Binding], re-deploying might remove the configuration added by OpenShift to allow service discovery. A new container image build will trigger a refresh of the Quarkus app in OpenShift: `-Dquarkus.container-image.build=true` which might be enough in most situations. If you need to update the OpenShift resources, you need to delete the binding first to create it again after new deployment.
This command will build your application locally, then trigger a container image build and finally apply the generated OpenShift resources automatically.
@@ -273,7 +273,7 @@ To add an annotation in the generated resources:
quarkus.openshift.annotations.foo=bar
----
-[#env-vars]
+[[env-vars]]
=== Environment variables
OpenShift provides multiple ways of defining environment variables:
@@ -440,7 +440,7 @@ A conflict between two definitions, e.g. mistakenly assigning both a value and s
Similarly, two redundant definitions, e.g. defining an injection from the same secret twice, will not cause an issue but will indeed report a warning to let you know that you might not have intended to duplicate that definition.
-[#env-vars-backwards]
+[[env-vars-backwards]]
===== Backwards compatibility
Previous versions of the OpenShift extension supported a different syntax to add environment variables. The older syntax is still supported but is deprecated, and it's advised that you migrate to the new syntax.
diff --git a/docs/src/main/asciidoc/dev-ui.adoc b/docs/src/main/asciidoc/dev-ui.adoc
index 38bcbb28de722..42454fba55d29 100644
--- a/docs/src/main/asciidoc/dev-ui.adoc
+++ b/docs/src/main/asciidoc/dev-ui.adoc
@@ -841,7 +841,7 @@ The router is mostly used internally. This uses https://github.com/vaadin/router
See the https://github.com/quarkusio/quarkus/blob/main/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/controller/router-controller.js[controller] for some methods that might be useful.
-[#JsonRPC]
+[[JsonRPC]]
====== JsonRPC
This controller allows you to fetch or stream runtime data. (vs. <> discussed earlier). There are two parts to getting data during runtime. The Java side in the runtime module, and then the usage in the web component.
diff --git a/docs/src/main/asciidoc/extension-codestart.adoc b/docs/src/main/asciidoc/extension-codestart.adoc
index 5f36ce736aa24..509addfa1107a 100644
--- a/docs/src/main/asciidoc/extension-codestart.adoc
+++ b/docs/src/main/asciidoc/extension-codestart.adoc
@@ -347,14 +347,14 @@ public class ConfigYamlCodestartTest {
== Specific topics
-[#org-acme-package]
+[[org-acme-package]]
=== `org.acme` placeholder for package name
You have to use `org.acme` as the package name in your extension codestart sources. In the generated project, the user specified package (or Group) will be used (and automatically replace `org.acme`).
The package will be automatically replaced in all the source files (.java, .kt, .scala). The package directory will also be automatically adjusted. If for some reason, another type of file needs the user package name then you should use a <> for it and the `{project.package-name}` data placeholder (https://github.com/quarkusio/quarkus/blob/main/devtools/project-core-extension-codestarts/src/main/resources/codestarts/quarkus/extension-codestarts/grpc-codestart/base/src/main/proto/hello.tpl.qute.proto#L4[find an example in the grpc proto file, window="_blank"]).
-[#codestart-yml]
+[[codestart-yml]]
=== codestart.yml
[source,yaml]
@@ -376,7 +376,7 @@ metadata:
path: /some-path
----
-[#directory-structure]
+[[directory-structure]]
=== Directory Structure
NOTE: `codestart.yml` is the only required file.
@@ -428,7 +428,7 @@ maven-surefire-plugin.version = Maven Surefire plugin version
* certain common files, such as `readme.md`, `src/main/resources/application.yml`, `src/main/resources/META-INF/resources/index.html` are generated from the collected fragments found in the selected codestarts for the project
* other files are copied.
-[#qute-templates]
+[[qute-templates]]
=== Templates (Qute)
Codestarts may use Qute templates `MyClass.tpl.qute.java` for dynamic rendering.
@@ -440,7 +440,7 @@ Those templates are able to use data which contains:
* The user input
* Some dynamically generated data (e.g. `dependencies` and `test-dependencies`)
-[#readme-md]
+[[readme-md]]
=== README.md
You may add a `README.md` or `README.tpl.qute.md` in the `base` directory, it will be appended to the others.
@@ -456,7 +456,7 @@ base/README.tpl.qute.md
NOTE: The `{#include readme-header /}` will use a template located in the Quarkus project codestart which displays standard info from the `codestart.yml` metadata.
-[#app-config]
+[[app-config]]
=== application config application.yml
As a convention, you should always provide the Quarkus configuration as a yaml file (`base/src/main/resources/application.yml`).
@@ -466,7 +466,7 @@ It is going to be:
* merged with the other extension codestarts configs
* automatically converted to the selected config type (yaml or properties) at generation time depending on the selected extensions
-[#index-html]
+[[index-html]]
=== index.html and web extension codestarts
Extension codestarts may provide a snippet for the generated index.html by adding this file:
@@ -479,7 +479,7 @@ base/src/main/resources/META-INF/resources/index.entry.qute.html:
NOTE: The `{#include index-entry /}` will use a template located in the Quarkus project codestart which displays standard info from the `codestart.yml` metadata.
-[#integration-test]
+[[integration-test]]
=== Integration test
An extension is available to help test extension codestarts `QuarkusCodestartTest`:
@@ -504,7 +504,7 @@ The extension provides helpers to test that the projects build `buildAllProjects
The https://github.com/quarkusio/quarkus/blob/main/integration-tests/devtools/src/test/java/io/quarkus/devtools/codestarts/quarkus/ConfigYamlCodestartTest.java[ ConfigYamlCodestartTest, window="_blank"] is a good example in Quarkus core.
-[#snapshot-testing]
+[[snapshot-testing]]
==== Snapshot testing
Snapshot testing is a way to make sure the content generated by a test doesn't change from one revision to another, i.e. between commits. That means, the generated content for each commit needs to be immutable and deterministic (this is the reason for using mocked data). To be able to perform such checks, we auto-generate snapshots of the generated content and commit them as the references of the expected output for subsequent test runs. When the templates change, we also commit the induced snapshots changes. This way, during the review, we can make sure the applied code changes have the expected effects on the generated output.
diff --git a/docs/src/main/asciidoc/extension-registry-user.adoc b/docs/src/main/asciidoc/extension-registry-user.adoc
index 9d0663d436649..7e749b2554d8b 100644
--- a/docs/src/main/asciidoc/extension-registry-user.adoc
+++ b/docs/src/main/asciidoc/extension-registry-user.adoc
@@ -182,7 +182,7 @@ Some options need to be set:
Here is an example on how it should look like:
-[#img-nexus]
+[[img-nexus]]
.Nexus Repository Manager: Add Proxy Repository
image:registry-nexus-repository.png[Nexus Repository Proxy]
diff --git a/docs/src/main/asciidoc/getting-started-testing.adoc b/docs/src/main/asciidoc/getting-started-testing.adoc
index 61eba1e3bb8fb..9ae069a0b0235 100644
--- a/docs/src/main/asciidoc/getting-started-testing.adoc
+++ b/docs/src/main/asciidoc/getting-started-testing.adoc
@@ -1070,7 +1070,7 @@ If you are using the `quarkus-hibernate-orm-panache` or `quarkus-mongodb-panache
If you are using Quarkus Security, check out the xref:security-testing.adoc[Testing Security] section for information on how to easily test security features of the application.
-[#quarkus-test-resource]
+[[quarkus-test-resource]]
== Starting services before the Quarkus application starts
A very common need is to start some services on which your Quarkus application depends, before the Quarkus application starts for testing. To address this need, Quarkus provides `@io.quarkus.test.common.QuarkusTestResource` and `io.quarkus.test.common.QuarkusTestResourceLifecycleManager`.
@@ -1242,7 +1242,7 @@ guide except injecting into tests (and the native executable runs in a separate
This is covered in the xref:building-native-image.adoc[Native Executable Guide].
-[#quarkus-integration-test]
+[[quarkus-integration-test]]
== Using `@QuarkusIntegrationTest`
`@QuarkusIntegrationTest` should be used to launch and test the artifact produced by the Quarkus build, and supports testing a jar (of whichever type), a native image or container image.
diff --git a/docs/src/main/asciidoc/getting-started.adoc b/docs/src/main/asciidoc/getting-started.adoc
index cb48c24485267..6c4a754220020 100644
--- a/docs/src/main/asciidoc/getting-started.adoc
+++ b/docs/src/main/asciidoc/getting-started.adoc
@@ -456,7 +456,7 @@ NOTE: If you want to deploy your application somewhere (typically in a container
NOTE: Before running the application, don't forget to stop the hot reload mode (hit `CTRL+C`), or you will have a port conflict.
-[#banner]
+[[banner]]
== Configuring the banner
By default, when a Quarkus application starts (in regular or dev mode), it will display an ASCII art banner. The banner can be disabled by setting `quarkus.banner.enabled=false` in `application.properties`,
diff --git a/docs/src/main/asciidoc/infinispan-client-reference.adoc b/docs/src/main/asciidoc/infinispan-client-reference.adoc
index 22674f6f605b4..95eeaa62fba44 100644
--- a/docs/src/main/asciidoc/infinispan-client-reference.adoc
+++ b/docs/src/main/asciidoc/infinispan-client-reference.adoc
@@ -666,7 +666,7 @@ for Kubernetes deployments, Infinispan Console,
https://infinispan.org/docs/stable/titles/rest/rest.html#rest_v2_protobuf_schemas[REST API] or the
https://infinispan.org/docs/stable/titles/encoding/encoding.html#registering-sci-remote-caches_marshalling[Hot Rod Java Client].
-[#infinispan-annotations-api]
+[[infinispan-annotations-api]]
== Caching using annotations
The Infinispan Client extension offers a set of annotations that can be used in a CDI managed bean to enable caching abilities with Infinispan.
diff --git a/docs/src/main/asciidoc/jms.adoc b/docs/src/main/asciidoc/jms.adoc
index c304466b2eae4..76eb8d70649ef 100644
--- a/docs/src/main/asciidoc/jms.adoc
+++ b/docs/src/main/asciidoc/jms.adoc
@@ -33,7 +33,7 @@ The guide can be used either via the Apache Qpid JMS AMQP client as detailed imm
alternatively with the Apache ActiveMQ Artemis JMS client given some different configuration
as <>.
-[#qpid-jms-amqp]
+[[qpid-jms-amqp]]
== Qpid JMS - AMQP
In the detailed steps below we will use the https://qpid.apache.org/components/jms/[Apache Qpid JMS]
@@ -75,7 +75,7 @@ This command generates a new project importing the quarkus-qpid-jms extension:
implementation("org.amqphub.quarkus:quarkus-qpid-jms")
----
-[#starting-the-broker]
+[[starting-the-broker]]
=== Starting the broker
Then, we need an AMQP broker. In this case we will use an Apache ActiveMQ Artemis server.
@@ -83,7 +83,7 @@ You can follow the instructions from the https://activemq.apache.org/components/
[source,bash]
----
-docker run -it --rm -p 8161:8161 -p 61616:61616 -p 5672:5672 -e AMQ_USER=quarkus -e AMQ_PASSWORD=quarkus quay.io/artemiscloud/activemq-artemis-broker:1.0.21
+docker run -it --rm -p 8161:8161 -p 61616:61616 -p 5672:5672 -e AMQ_USER=quarkus -e AMQ_PASSWORD=quarkus quay.io/artemiscloud/activemq-artemis-broker:1.0.25
----
=== The price producer
@@ -294,7 +294,7 @@ quarkus.qpid-jms.password=quarkus
More detail about the configuration are available in the https://github.com/amqphub/quarkus-qpid-jms#configuration[Quarkus Qpid JMS] documentation.
-[#get-it-running]
+[[get-it-running]]
=== Get it running
If you followed the instructions, you should have the Artemis server running.
@@ -326,7 +326,7 @@ Open `http://localhost:8080/prices.html` in your browser.
'''
-[#artemis-jms]
+[[artemis-jms]]
== Artemis JMS
The above steps detailed using the Qpid JMS AMQP client, however the guide can also be used
diff --git a/docs/src/main/asciidoc/kafka.adoc b/docs/src/main/asciidoc/kafka.adoc
index a1eebb82de887..120a2977b7e52 100644
--- a/docs/src/main/asciidoc/kafka.adoc
+++ b/docs/src/main/asciidoc/kafka.adoc
@@ -237,7 +237,7 @@ Injecting `@Channel("prices")` or having `@Incoming("prices")` does not automati
You need to configure an inbound connector with `mp.messaging.incoming.prices\...` or have an `@Outgoing("prices")` method somewhere in your application (in which case, `prices` will be an in-memory channel).
====
-[#blocking-processing]
+[[blocking-processing]]
=== Blocking processing
Reactive Messaging invokes your method on an I/O thread.
@@ -2775,7 +2775,7 @@ mp.messaging.incoming.fruits.value.deserializer=org.acme.FruitDeserializer
Check <> for more detail about the usage of Jackson with Kafka.
You can also use Avro.
-[#persisting-kafka-messages-with-hibernate-reactive]
+[[persisting-kafka-messages-with-hibernate-reactive]]
=== Persisting Kafka messages with Hibernate Reactive
To persist objects received from Kafka into a database, you can use Hibernate Reactive with Panache.
@@ -2922,7 +2922,7 @@ public class ResourceSendingToKafka {
<3> Wrap the managed entity inside a Data transfer object and send it to Kafka.
This makes sure that managed entity is not impacted by the Kafka serialization.
-[#writing-entities-managed-by-hibernate-reactive-to-kafka]
+[[writing-entities-managed-by-hibernate-reactive-to-kafka]]
=== Writing entities managed by Hibernate Reactive to Kafka
To send to Kafka entities managed by Hibernate Reactive, we recommend using:
diff --git a/docs/src/main/asciidoc/kubernetes-client.adoc b/docs/src/main/asciidoc/kubernetes-client.adoc
index 23a5efce9e567..19f5be0fc7ca4 100644
--- a/docs/src/main/asciidoc/kubernetes-client.adoc
+++ b/docs/src/main/asciidoc/kubernetes-client.adoc
@@ -286,7 +286,7 @@ public class KubernetesClientTest {
}
----
-[#note-on-generic-types]
+[[note-on-generic-types]]
== Note on implementing or extending generic types
Due to the restrictions imposed by GraalVM, extra care needs to be taken when implementing or extending generic types provided by the client if the application is intended to work in native mode.
@@ -369,7 +369,7 @@ public class ResourceWatcher implements Watcher {
client.pods().watch(new ResourceWatcher());
----
-[#note-on-ec-keys]
+[[note-on-ec-keys]]
== Note on using Elliptic Curve keys
Please note that if you would like to use Elliptic Curve keys with Kubernetes Client then adding a BouncyCastle PKIX dependency is required:
diff --git a/docs/src/main/asciidoc/logging.adoc b/docs/src/main/asciidoc/logging.adoc
index 9d93ff634e73f..0f6ab858131f0 100644
--- a/docs/src/main/asciidoc/logging.adoc
+++ b/docs/src/main/asciidoc/logging.adoc
@@ -585,7 +585,7 @@ quarkus.log.category."io.undertow.request.security".level=TRACE
NOTE: As we don't change the root logger, the console log will only contain `INFO` or higher level logs.
-[#category-named-handlers-example]
+[[category-named-handlers-example]]
.Named handlers attached to a category
[source, properties]
----
@@ -602,7 +602,7 @@ quarkus.log.category."io.quarkus.category".level=INFO
quarkus.log.category."io.quarkus.category".handlers=STRUCTURED_LOGGING,STRUCTURED_LOGGING_FILE
----
-[#root-category-named-handlers-example]
+[[root-category-named-handlers-example]]
.Named handlers attached to the root logger
[source, properties]
----
diff --git a/docs/src/main/asciidoc/mailer-reference.adoc b/docs/src/main/asciidoc/mailer-reference.adoc
index 82b0254667905..ce3ed5b03802c 100644
--- a/docs/src/main/asciidoc/mailer-reference.adoc
+++ b/docs/src/main/asciidoc/mailer-reference.adoc
@@ -461,7 +461,7 @@ Use `MailTemplate` injection for the named mailer configurations.
This section provides the configurations to use with popular mail services.
-[#gmail-specific-configuration]
+[[gmail-specific-configuration]]
=== Gmail specific configuration
If you want to use the Gmail SMTP server, first create a dedicated password in `Google Account > Security > App passwords` or go to https://myaccount.google.com/apppasswords.
diff --git a/docs/src/main/asciidoc/native-and-ssl.adoc b/docs/src/main/asciidoc/native-and-ssl.adoc
index 95511651bacfe..142c5aedd3101 100644
--- a/docs/src/main/asciidoc/native-and-ssl.adoc
+++ b/docs/src/main/asciidoc/native-and-ssl.adoc
@@ -214,7 +214,7 @@ And let's build the native executable again:
include::{includes}/devtools/build-native.adoc[]
-[#the-truststore-path]
+[[the-truststore-path]]
== The TrustStore path
[WARNING]
@@ -257,7 +257,7 @@ The file containing the custom TrustStore does *not* (and probably should not) h
Using the runtime certificate configuration, supported by GraalVM since 21.3 does not require any special or additional configuration compared to regular java programs or Quarkus in jvm mode.
For more information, see the link:https://www.graalvm.org/{graalvm-docs-version}/reference-manual/native-image/dynamic-features/CertificateManagement/#runtime-options[Runtime Options] section of the "GraalVM Certificate Management in Native Image" guide.
-[#working-with-containers]
+[[working-with-containers]]
=== Working with containers
No special action needs to be taken when running the native binary in a container. If the native binary was properly built with the custom TrustStore
diff --git a/docs/src/main/asciidoc/quarkus-reactive-architecture.adoc b/docs/src/main/asciidoc/quarkus-reactive-architecture.adoc
index 5a35c153f49da..8e1056f21fee0 100644
--- a/docs/src/main/asciidoc/quarkus-reactive-architecture.adoc
+++ b/docs/src/main/asciidoc/quarkus-reactive-architecture.adoc
@@ -153,7 +153,7 @@ Quarkus is pragmatic and versatile.
You decide how to develop and execute your application.
You can use the imperative way, the reactive way, or mix them, using reactive on the parts of the application under high concurrency.
-[#quarkus-extensions-enabling-reactive]
+[[quarkus-extensions-enabling-reactive]]
== Quarkus Extensions enabling Reactive
Quarkus offers a large set of reactive APIs and features.
@@ -193,7 +193,7 @@ Offer reactive and imperative programming interfaces.
* GraphQL: implement and query (client) data store using GraphQL. Offers Mutiny APIs and subscriptions as event streams.
* Fault Tolerance: provide retry, fallback, circuit breakers abilities to your application.It can be used with Mutiny types.
-[#engine]
+[[engine]]
=== Engine
* Vert.x : the underlying reactive engine of Quarkus.
diff --git a/docs/src/main/asciidoc/rabbitmq-reference.adoc b/docs/src/main/asciidoc/rabbitmq-reference.adoc
index d264e5aa97e47..f8d2bda05b14e 100644
--- a/docs/src/main/asciidoc/rabbitmq-reference.adoc
+++ b/docs/src/main/asciidoc/rabbitmq-reference.adoc
@@ -294,7 +294,7 @@ mp.messaging.outgoing.people.exchange.name=people
mp.messaging.outgoing.people.exchange.declare=false
----
-[#blocking-processing]
+[[blocking-processing]]
=== Execution model and Blocking processing
Reactive Messaging invokes your method on an I/O thread.
diff --git a/docs/src/main/asciidoc/rest-client-reactive.adoc b/docs/src/main/asciidoc/rest-client-reactive.adoc
index d704cea4f9362..5fd3900294189 100644
--- a/docs/src/main/asciidoc/rest-client-reactive.adoc
+++ b/docs/src/main/asciidoc/rest-client-reactive.adoc
@@ -681,7 +681,7 @@ public class ExtensionsResource {
<1> the client will use the registered HTTP Client options over the HTTP Client options provided via CDI if any.
-[#redirection]
+[[redirection]]
== Redirection
A HTTP server can redirect a response to another location by sending a response with a status code that starts with "3" and a HTTP header "Location" holding the URL to be redirected to. When the REST Client receives a redirection response from a HTTP server, it won't automatically perform another request to the new location. We can enable the automatic redirection in REST Client by adding the "follow-redirects" property:
@@ -808,7 +808,7 @@ public class ExtensionsResourceTest {
The code above uses link:https://rest-assured.io/[REST Assured]'s link:https://github.com/rest-assured/rest-assured/wiki/GettingStarted#jsonpath[json-path] capabilities.
-[#async-support]
+[[async-support]]
== Async Support
To get the full power of the reactive nature of the client, you can use the non-blocking flavor of REST Client Reactive extension,
@@ -1785,7 +1785,7 @@ public class QuarkusMockTest {
<2> note that `RestClient.LITERAL` has to be passed as the last argument of the `installMockForType` method
-[#using-a-mock-http-server-for-tests]
+[[using-a-mock-http-server-for-tests]]
== Using a Mock HTTP Server for tests
Setting up a mock HTTP server, against which tests are run, is a common testing pattern.
diff --git a/docs/src/main/asciidoc/resteasy-client.adoc b/docs/src/main/asciidoc/resteasy-client.adoc
index 3d04e1f1d84a7..912a70ea3b7f7 100644
--- a/docs/src/main/asciidoc/resteasy-client.adoc
+++ b/docs/src/main/asciidoc/resteasy-client.adoc
@@ -341,7 +341,7 @@ public class ExtensionsResourceTest {
The code above uses link:https://rest-assured.io/[REST Assured]'s link:https://github.com/rest-assured/rest-assured/wiki/GettingStarted#jsonpath[json-path] capabilities.
-[#redirection]
+[[redirection]]
== Redirection
A HTTP server can redirect a response to another location by sending a response with a status code that starts with "3" and a HTTP header "Location" holding the URL to be redirected to. When the REST Client receives a redirection response from a HTTP server, it won't automatically perform another request to the new location. However, you can enable the automatic redirection by enabling the "follow-redirects" property:
diff --git a/docs/src/main/asciidoc/resteasy-reactive.adoc b/docs/src/main/asciidoc/resteasy-reactive.adoc
index 1b456e8b94b5f..52278efc7003c 100644
--- a/docs/src/main/asciidoc/resteasy-reactive.adoc
+++ b/docs/src/main/asciidoc/resteasy-reactive.adoc
@@ -1869,7 +1869,7 @@ When we call a resource `/records/1` that returns only one instance, then the ou
}
----
-Finally, you can also provide additional HAL links programmatically in your resource just by returning either `HalCollectionWrapper` (to return a list of entities) or `HalEntityWrapper` (to return a single object) as described in the following example:
+Finally, you can also provide additional HAL links programmatically in your resource just by returning either `HalCollectionWrapper` (to return a list of entities) or `HalEntityWrapper` (to return a single object) as described in the following example:
[source,java]
----
@@ -1877,14 +1877,14 @@ Finally, you can also provide additional HAL links programmatically in your reso
public class RecordsResource {
@Inject
- RestLinksProvider linksProvider;
+ HalService halService;
@GET
@Produces({ MediaType.APPLICATION_JSON, RestMediaType.APPLICATION_HAL_JSON })
@RestLink(rel = "list")
- public HalCollectionWrapper getAll() {
+ public HalCollectionWrapper getAll() {
List list = // ...
- HalCollectionWrapper halCollection = new HalCollectionWrapper(list, "collectionName", linksProvider.getTypeLinks(Record.class));
+ HalCollectionWrapper halCollection = halService.toHalCollectionWrapper( list, "collectionName", Record.class);
halCollection.addLinks(Link.fromPath("/records/1").rel("first-record").build());
return halCollection;
}
@@ -1894,9 +1894,9 @@ public class RecordsResource {
@Path("/{id}")
@RestLink(rel = "self")
@InjectRestLinks(RestLinkType.INSTANCE)
- public HalEntityWrapper get(@PathParam("id") int id) {
+ public HalEntityWrapper get(@PathParam("id") int id) {
Record entity = // ...
- HalEntityWrapper halEntity = new HalEntityWrapper(entity, linksProvider.getInstanceLinks(entity));
+ HalEntityWrapper halEntity = halService.toHalWrapper(entity);
halEntity.addLinks(Link.fromPath("/records/1/parent").rel("parent-record").build());
return halEntity;
}
@@ -1917,7 +1917,7 @@ For more information about the CORS filters and their usage, see the xref:securi
Here are some more advanced topics that you may not need to know about initially, but
could prove useful for more complex use cases.
-[#execution-model-blocking-non-blocking]
+[[execution-model-blocking-non-blocking]]
=== Execution model, blocking, non-blocking
[[execution-model]]
diff --git a/docs/src/main/asciidoc/scheduler-reference.adoc b/docs/src/main/asciidoc/scheduler-reference.adoc
index d4cb1cc0f02a9..25fa988a58315 100644
--- a/docs/src/main/asciidoc/scheduler-reference.adoc
+++ b/docs/src/main/asciidoc/scheduler-reference.adoc
@@ -166,7 +166,7 @@ So for example a Property Expression with the default value `"off"` can be used
void myMethod() { }
----
-[#identity]
+[[identity]]
=== Identity
By default, a unique identifier is generated for each scheduled method.
diff --git a/docs/src/main/asciidoc/scheduler.adoc b/docs/src/main/asciidoc/scheduler.adoc
index b402f01251292..6fdd25396e772 100644
--- a/docs/src/main/asciidoc/scheduler.adoc
+++ b/docs/src/main/asciidoc/scheduler.adoc
@@ -74,7 +74,7 @@ This will add the following to your build file:
implementation("io.quarkus:quarkus-scheduler")
----
-[#standard-scheduling]
+[[standard-scheduling]]
== Creating a scheduled job
In the `org.acme.scheduler` package, create the `CounterBean` class, with the following content:
diff --git a/docs/src/main/asciidoc/security-authentication-mechanisms.adoc b/docs/src/main/asciidoc/security-authentication-mechanisms.adoc
index dd3f8522251c7..76bfeb30693fc 100644
--- a/docs/src/main/asciidoc/security-authentication-mechanisms.adoc
+++ b/docs/src/main/asciidoc/security-authentication-mechanisms.adoc
@@ -207,7 +207,7 @@ When you set `quarkus.http.ssl.client-auth` to `required`, the system automatica
When the incoming request matches a valid certificate in the truststore, your application can obtain the subject by injecting a `SecurityIdentity` as follows:
-[#x509-subject-example]
+[[x509-subject-example]]
.Obtaining the subject
[source,java]
----
@@ -222,7 +222,7 @@ public String hello() {
----
You can also get the certificate by using the code outlined in the following example:
-[#x509-credential-example]
+[[x509-credential-example]]
.Obtaining the certificate
[source,java]
----
diff --git a/docs/src/main/asciidoc/security-properties.adoc b/docs/src/main/asciidoc/security-properties.adoc
index dc6d3d36a78d1..d2916c7a862f3 100644
--- a/docs/src/main/asciidoc/security-properties.adoc
+++ b/docs/src/main/asciidoc/security-properties.adoc
@@ -61,7 +61,7 @@ The `quarkus.security.users.file.users` configuration property specifies a class
The following <> illustrates the format:
-[#test-users-example]
+[[test-users-example]]
.Example of `test-users.properties`
[source,properties]
----
@@ -121,7 +121,7 @@ This can be generated for the first example above by running the command `echo -
The user to password mappings are specified in the `application.properties` file by properties keys of the form `quarkus.security.users.embedded.users.=`.
The following <> illustrates the syntax with 4 user-to-password mappings:
-[#password-example]
+[[password-example]]
.Example of passwords
[source,properties,linenums]
----
@@ -138,7 +138,7 @@ quarkus.security.users.embedded.users.noadmin=n0Adm1n
The user to role mappings are specified in the `application.properties` file by properties keys of the form `quarkus.security.users.embedded.roles.=role1[,role2[,role3[,...]]]`.
The following <> illustrates the syntax with 4 user-to-role mappings:
-[#roles-example]
+[[roles-example]]
.Example of roles
[source,properties,linenums]
----
diff --git a/docs/src/main/asciidoc/security-testing.adoc b/docs/src/main/asciidoc/security-testing.adoc
index 234bc9d736d37..382087d19aa46 100644
--- a/docs/src/main/asciidoc/security-testing.adoc
+++ b/docs/src/main/asciidoc/security-testing.adoc
@@ -36,7 +36,7 @@ quarkus.oauth2.client-secret=client-secret
quarkus.oauth2.introspection-url=http://host:port/introspect
----
-[#testing-security]
+[[testing-security]]
== Test Security Extension
Quarkus provides explicit support for testing with different users, and with the security subsystem disabled. To use
diff --git a/docs/src/main/asciidoc/spring-security.adoc b/docs/src/main/asciidoc/spring-security.adoc
index 1b256ee98d88d..a92cecd6afee8 100644
--- a/docs/src/main/asciidoc/spring-security.adoc
+++ b/docs/src/main/asciidoc/spring-security.adoc
@@ -142,7 +142,7 @@ Open your browser to http://localhost:8080/greeting.
The result should be: `{"message": "hello"}`.
-[#secure]
+[[secure]]
== Modify the controller to secure the `hello` method
In order to restrict access to the `hello` method to users with certain roles, the `@Secured` annotation will be utilized.
diff --git a/docs/src/main/asciidoc/vertx-reference.adoc b/docs/src/main/asciidoc/vertx-reference.adoc
index 5802a913f61dd..b7956de6f443b 100644
--- a/docs/src/main/asciidoc/vertx-reference.adoc
+++ b/docs/src/main/asciidoc/vertx-reference.adoc
@@ -15,7 +15,7 @@ As described in the xref:quarkus-reactive-architecture.adoc[Quarkus Reactive Arc
This guide is the companion to the xref:vertx.adoc[Using Eclipse Vert.x API from a Quarkus Application] guide.
It provides more advanced details about the usage and the configuration of the Vert.x instance used by Quarkus.
-[#vertx-access]
+[[vertx-access]]
== Access the Vert.x instance
To access the managed Vert.x instance, add the `quarkus-vertx` extension to your project.
@@ -230,7 +230,7 @@ Then, create the native executable with:
include::{includes}/devtools/build-native.adoc[]
-[#using-vert-x-json]
+[[using-vert-x-json]]
== Use Vert.x JSON
Vert.x APIs often rely on JSON.
@@ -463,7 +463,7 @@ Thanks to the `@Dependent` scope, it returns a new instance on every call.
Finally, you pass the desired number of instances to the `DeploymentOptions`, such as two in the previous example.
It will call the supplier twice, which will create two instances of your verticle.
-[#eventbus]
+[[eventbus]]
== Use the Event Bus
Vert.x comes with a built-in https://vertx.io/docs/vertx-core/java/#event_bus[event bus] that you can use from your Quarkus application.
@@ -942,7 +942,7 @@ The browser must use the `vertx-eventbus` JavaScript library to consume the mess