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]

Reply via email to