= Extension metadata
:page-aliases: extension-metadata.adoc

== `quarkus-extension.yaml`

This file contains metadata used by Quarkus project generator https://{link-quarkus-code-generator}/[https://{link-quarkus-code-generator}/].
It is located in the `src/main/resources/META-INF` directory of the runtime module.
Here is an https://github.com/apache/camel-quarkus/blob/main/extensions/activemq/runtime/src/main/resources/META-INF/quarkus-extension.yaml[example from the ActiveMQ extension]:

[source,yaml]
----
name: "Camel ActiveMQ"
description: "Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component"
metadata:
  guide: "https://camel.apache.org/camel-quarkus/latest/extensions/activemq.html"
  categories:
  - "integration"
----

Within Camel Quarkus, these files are 100% generated by `cq-maven-plugin`. To re-generate the
`quarkus-extension.yaml` files in the whole source tree, run the following command from the root directory of
the source tree:

[source,shell]
----
$ mvn -N cq:update-quarkus-metadata
----

The data comes from the following
sources:

* `name`: comes from `pom.xml`'s `<name>`
* `description`: taken from xref:manual::camel-catalog.adoc[Camel Catalog]. If the given
  extension contains more than one component, language or data format, their descriptions are concatenated and a warning
  is issued in the log. The value from Camel Catalog can be overridden by setting a `<description>` in the
  `pom.xml` of the given extension's runtime module.
* `guide`: derived from the extension's `artifactId`
* `unlisted`: `true` if the given extension is JVM only; omitted otherwise.
* `keywords`: omitted unless `<quarkus.metadata.keywords>` property is available in the runtime module's
  `pom.xml` file. Please set explicit keywords only if the given term is both important and occurs neither in
  extension name nor in the description.
* `categories`: constant
