The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Quarkiverse Hub - Home of Community Extensions

Today we’re proud to announce Quarkiverse Hub, a GitHub organization where any contributor can host their Quarkus extensions.

quarkiverse repos
Hosting your extension in the Quarkiverse Hub makes it available to all Quarkus users through the Quarkus tooling.

So read on to discover more and find out how you can make your extension available to all Quarkus developers today!

Características

By hosting an extension under the Quarkiverse Hub, the following features are enabled:

Automated and secured publishing of your Maven releases to Maven Central

Registering and publishing artifacts to Maven central can become a daunting task. In Quarkiverse that is automated by GitHub Actions, requiring no manual interaction with any command line tools. Releasing an artifact is as simple as opening a pull-request changing the .github/project.yml file in the extension’s repository. Once the pull-request is merged, a GitHub action is triggered invoking mvn release:prepare release:perform and the extension is deployed to Maven central. The Quarkiverse wiki has more details and troubleshooting tips.

quarkiverse release
Automated cross-testing of your extension with Quarkus builds/releases

Quarkus Core releases happen constantly and keeping up with the latest changes before a release is performed is crucial. Quarkiverse extensions are built daily against the latest Quarkus core using the Quarkus Ecosystem CI and listed in the Quarkus Status page.

Consistent formatting and release of projects

The quarkiverse-parent artifact (inherited by each extension in Quarkiverse) enables plugins that will format your source code to the same format used in Quarkus core.

Documentation aggregation

Get your versioned extension documentation automatically published (including guides)! Quarkiverse Hub uses Antora to aggregate each extension documentation in the Quarkiverse docs website. Although the layout is still a work in progress, you can check it out at https://quarkiverse.github.io/quarkiverse-docs/

quarkiverse guides
Automated inclusion in the upcoming Extension registry

The Extension registry is still a work in progress (https://registry.quarkus.io), but the gist of it is to have a single place to browse for extensions (including https://code.quarkus.io, command line and IDE plugins).

Requirements

In order to automate extension releases and publication of docs, there are some rules that need to be followed for projects under the Quarkiverse organization:

  • The extension repository should be named quarkus-<project>

  • A Quarkiverse extension MUST belong to the io.quarkiverse.<project> groupId

  • The root pom.xml MUST inherit from io.quarkiverse:quarkiverse-parent

  • A Quarkiverse extension has the following structure:

├── deployment (1)
├── runtime
├── integration-test
├── docs (2)
├── pom.xml
├── LICENSE
└── README
1 The deployment, runtime and integration-test directories containing the extension classes. See How to create new extension modules using Maven for more details.
2 docs (optional): The docs should follow the Antora’s Standard File and Directory Set. See an example here.
For more information, look at the Quarkiverse Wiki
quarkiverse way

How do I sign-up?

Create an Extension Proposal ticket in the Quarkus issue tracker (first check if the extension you’re proposing is not created yet) and let us know if you want to lead the development of this extension by commenting on the issue.

The Quarkus team will get you started with the boring stuff of setting up a brand new repository and deployment scripts, so you’ll have fun coding it.

As usual, we’re always improving, so take a look at Joining Quarkiverse for the process we are currently using.

What extensions are in Quarkiverse already?

Stay tuned for the latest info about Quarkiverse in the Quarkiverse Wiki

Can I reuse this setup for an extension outside the Quarkiverse organization?

Yes, right now we’re in the process of documenting the extra steps to make your extension releases visible to our tooling in this case.