chore: generate a Jandex index in the published component modules - #10240
Merged
Merged
Conversation
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>
mcollovati
reviewed
Sep 25, 2026
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
marked this pull request as ready for review
September 28, 2026 14:29
mcollovati
approved these changes
Sep 28, 2026
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>
|
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



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.pom.xml: addsjandex-maven-plugintopluginManagementwith amake-indexexecution. Adds ajandex.plugin.versionproperty (3.6.0).*-flowandvaadin-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..github/dependabot.yml: Dependabot no longer bumpsio.smallrye:jandex-maven-pluginon its own.CONVENTIONS.md: says that new published modules must declare the plugin, and that its version must follow Flow.