Skip to content

chore: generate a Jandex index in the published component modules - #10240

Merged
sissbruecker merged 4 commits into
mainfrom
chore/jandex-index-in-component-modules
Oct 1, 2026
Merged

sissbruecker merged 4 commits into
mainfrom
chore/jandex-index-in-component-modules

Conversation

@totally-not-ai

@totally-not-ai totally-not-ai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Each published component jar now includes a Jandex index of its own classes. The Vaadin Quarkus extension reads this index to find component classes. This matches vaadin/flow#25899, which does the same for the Flow runtime modules, so Quarkus no longer needs an aggregate index artifact that indexes classes from other jars.

What changed

Behavior change: published component jars now contain META-INF/jandex.idx. Quarkus apps that use these jars can find component classes through this index. Nothing changes for apps that don't use Jandex. No Java code or public API changes.

  • Root pom.xml: adds jandex-maven-plugin to pluginManagement with a make-index execution. Adds a jandex.plugin.version property (3.6.0).
  • Each published component module (*-flow and vaadin-flow-components-base) opts in by declaring the plugin with no extra config. This works the same way as the bnd and exec (npm version pinning) plugins. Integration test and TestBench modules don't declare it.
  • The plugin version is owned by Flow. Flow picks it to match the Jandex version of the minimum supported Quarkus version. All indexes an app loads must use the same index format, so the value is copied from the Flow root POM. A comment in the POM explains this.
  • .github/dependabot.yml: Dependabot no longer bumps io.smallrye:jandex-maven-plugin on its own.
  • CONVENTIONS.md: says that new published modules must declare the plugin, and that its version must follow Flow.

Each published component module now builds a Jandex index of its own
classes into META-INF/jandex.idx, where the Vaadin Quarkus extension
reads it from. This mirrors vaadin/flow#25899, which does the same for
the Flow runtime modules instead of relying on an aggregate index
artifact that indexes classes from other jars.

The root POM configures jandex-maven-plugin in pluginManagement and a
module opts in by declaring the plugin, the same way modules opt in to
the bnd and pinned npm versions plugins. Integration test and TestBench
modules do not declare it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread pom.xml
The component indexes are loaded alongside the Flow ones, so they must
be written in the same index format. Document that the version has to
match Flow's and stop Dependabot from bumping it on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mcollovati
mcollovati marked this pull request as ready for review September 28, 2026 14:29
totally-not-ai Bot and others added 2 commits October 1, 2026 08:29
Flow picks the jandex-maven-plugin version to match the Jandex version
of the minimum supported Quarkus version. Make it explicit that this
repository copies the value from the Flow root POM instead of choosing
one of its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sissbruecker
sissbruecker enabled auto-merge October 1, 2026 08:33
@sissbruecker
sissbruecker added this pull request to the merge queue Oct 1, 2026
Merged via the queue into main with commit f1d31b3 Oct 1, 2026
23 of 27 checks passed
@sissbruecker
sissbruecker deleted the chore/jandex-index-in-component-modules branch October 1, 2026 08:57
@sonarqubecloud

sonarqubecloud Bot commented Oct 1, 2026

Copy link
Copy Markdown

mcollovati added a commit to vaadin/collaboration-kit that referenced this pull request Oct 2, 2026
The collaboration-engine jar now ships a Jandex index of its own classes
in META-INF/jandex.idx, which is where the Vaadin Quarkus extension reads
it from, so the Vaadin platform no longer needs to add it to an
aggregate index. This matches vaadin/flow#25899 and the same change in
flow-components (vaadin/flow-components#10240, #10320).

The index format is owned by Flow: jandex.format.version has the same
value as in the Flow root POM, so that all indexes an application loads
share the same format. JandexIndexTest fails when Collaboration Engine
writes a different format than flow-server.

The license header template now uses the $YEAR token, so that spotless
accepts the header of new files with a later year than 2024 and keeps
the year of existing headers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants