anshul98ks123 opened a new pull request, #18540:
URL: https://github.com/apache/pinot/pull/18540
### Issue
External integrators of Apache Pinot (downstream forks, vendors, embedded
users) that inherit from `org.apache.pinot:pinot` via `<parent>` cannot pin all
`pinot-*` versions through a single managed entry. There is no published BOM
artifact today; consumers have to either:
- Inherit from `<parent>org.apache.pinot:pinot</parent>` and accept that
`${project.version}` inside the parent's `<dependencyManagement>`
re-interpolates against the **child's** effective POM (leaking the consumer's
own `${revision}` into Pinot dep coordinates and breaking resolution against
Maven Central / mirrors), or
- Hand-maintain an explicit `<version>${apache.pinot.version}</version>`
override **for every new `pinot-*` module** the parent adds.
Every new module (e.g., `pinot-sql-ddl`, `pinot-udf-test`,
`pinot-materialized-view`) re-breaks downstream CI until the override list
catches up. The StarTree fork has hit this three times in the last five days
alone — see
[startree-pinot#3309](https://github.com/startreedata/startree-pinot/pull/3309)
(added overrides for `pinot-sql-ddl` + `pinot-udf-test`) and
[startree-pinot#3338](https://github.com/startreedata/startree-pinot/pull/3338)
(added an override for `pinot-materialized-view`, the module introduced in
#18528).
### Fix
Add a new `pinot-bom` module that publishes a standalone Bill-of-Materials
POM listing every published `pinot-*` artifact at a hardcoded literal version.
Downstream consumers import it via `<scope>import</scope>`:
```xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.pinot</groupId>
<artifactId>pinot-bom</artifactId>
<version>1.6.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
```
The BOM uses literal versions (not `${project.version}`) so the published
POM does not interpolate against the importer's project. Every new `pinot-*`
module added in subsequent releases is picked up via the BOM with no
consumer-side patch required.
The existing `<dependencyManagement>` block in the parent `pom.xml` is left
untouched — Pinot's own modules continue to inherit it via `<parent>` exactly
as before. The BOM is purely additive.
### Testing
```bash
./mvnw install -pl pinot-bom -DskipTests
# Verify the installed pom has literal versions, not ${project.version}:
grep '<version>'
~/.m2/repository/org/apache/pinot/pinot-bom/<version>/pinot-bom-*.pom | head
```
- [x] `pinot-bom` builds + installs locally.
- [x] Installed POM contains literal version strings for every `pinot-*` dep
(verified via grep).
- [x] Existing `pinot-*` modules unaffected (no change to their POMs or to
the root reactor besides adding the new module entry).
- [ ] Smoke test from a downstream consumer that imports the BOM via
`<scope>import</scope>` — see companion PR
[startreedata/startree-pinot#XXXX](https://github.com/startreedata/startree-pinot/pull/XXXX).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]