Add pinot-bom: Bill of Materials for Pinot module versions#18542
Open
gortiz wants to merge 5 commits into
Open
Add pinot-bom: Bill of Materials for Pinot module versions#18542gortiz wants to merge 5 commits into
gortiz wants to merge 5 commits into
Conversation
xiangfu0
reviewed
May 21, 2026
| </dependency> | ||
| <dependency> | ||
| <groupId>org.apache.pinot</groupId> | ||
| <artifactId>pinot-kafka-3.0</artifactId> |
Contributor
There was a problem hiding this comment.
will there be conflict for kafka3 and kafka4?
similar to spark 3 and 4 etc
xiangfu0
approved these changes
May 21, 2026
Contributor
xiangfu0
left a comment
There was a problem hiding this comment.
Overall a neat solution.
Please ensure you fixed the CI before the merge
Introduces a new pinot-bom module (packaging=pom) that consolidates all
org.apache.pinot dependencyManagement entries into a single importable BOM.
The root pom's Pinot module entries are replaced with a single BOM import.
Downstream projects (e.g. startree-pinot) that inherit from the Pinot root
POM cannot use ${project.version} in the inherited dependencyManagement —
it resolves to the downstream project's own version. Now they can replace
their entire duplicated block with:
<dependency>
<groupId>org.apache.pinot</groupId>
<artifactId>pinot-bom</artifactId>
<version>${apache.pinot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Design note: pinot-bom deliberately has no <parent>. Maven 3 rejects a
cycle where the root pom imports a BOM that also inherits from that same
root pom. By omitting the parent and declaring coordinates explicitly,
Maven can resolve pinot-bom/pom.xml independently. The `mvn versions:set`
plugin still updates pinot-bom's explicit version because it is listed in
the root pom's <modules> and carries a matching version.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pinot-bom has no <parent>, so it cannot inherit the root pom's pluginManagement entry for com.mycila:license-maven-plugin. Without an explicit binding, `mvn license:check` falls back to org.codehaus.mojo:license-maven-plugin which has no "check" goal in version 2.7.1. Bind the mycila plugin directly with skip=true: the only file in this module is pom.xml, whose license header is already checked by the root-level Apache RAT execution. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Two issues: 1. spotless:check and license:check fail on pinot-bom because it has no <parent> and therefore inherits no pluginManagement. Maven falls back to unknown plugin prefixes for both 'spotless' and 'license'. Fix: bind both plugins explicitly in pinot-bom with <skip>true</skip>; there are no Java source files to check here. 2. assembly-descriptor IT test (simple-assembly) fails because the maven-invoker-plugin builds it against an isolated local repo that only contained pinot-spi. pinot-spi inherits from the pinot root pom, which now imports pinot-bom in its dependencyManagement. Maven tries to resolve pinot-bom during the simple-assembly build and cannot find it in the isolated repo. Fix: add pinot-bom as an extraArtifact so the invoker pre-installs it into the IT repo alongside pinot-spi. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without a parent, the enforcer plugin has no rules configured and fails with "No rules are configured." Explicitly bind it with <skip>true</skip> so the CI linter's `enforcer:enforce` invocation is a no-op for this module. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
pinot-bommodule: a Maven Bill of Materials (BOM) that pins everyorg.apache.pinotartifact to a single consistent version.pinot-bomin itsdependencyManagementinstead of listing all Pinot modules individually; new subproject entries belong inpinot-bom/pom.xml.pinot-bom) rather than declaring dozens of individual version entries.Backward compatibility
Projects that already set the Pinot root POM as their
<parent>are unaffected. The inheriteddependencyManagementthey receive is equivalent to before — the only structural difference is that the module list now lives inpinot-bomand is imported by the root POM rather than being declared inline.Test plan
./mvnw validate -Npinot-bominstalls to local repo:cd pinot-bom && ../mvnw install./mvnw help:effective-pom -Nmvn versions:set -DnewVersion=X.Y.Zfrom repo root updates both the root POM andpinot-bom/pom.xmlin one step🤖 Generated with Claude Code