cbornet opened a new issue #14168:
URL: https://github.com/apache/pulsar/issues/14168


   <!---
   Instructions for creating a PIP using this issue template:
   
    1. The author(s) of the proposal will create a GitHub issue ticket using 
this template.
       (Optionally, it can be helpful to send a note discussing the proposal to
       [email protected] mailing list before submitting this GitHub issue. 
This discussion can
       help developers gauge interest in the proposed changes before 
formalizing the proposal.)
    2. The author(s) will send a note to the [email protected] mailing list
       to start the discussion, using subject prefix `[PIP] xxx`. To determine 
the appropriate PIP
       number `xxx`, inspect the mailing list 
(https://lists.apache.org/[email protected])
       for the most recent PIP. Add 1 to that PIP's number to get your PIP's 
number.
    3. Based on the discussion and feedback, some changes might be applied by
       the author(s) to the text of the proposal.
    4. Once some consensus is reached, there will be a vote to formally approve
       the proposal. The vote will be held on the [email protected] 
mailing list. Everyone
       is welcome to vote on the proposal, though it will considered to be 
binding
       only the vote of PMC members. It will be required to have a lazy 
majority of
       at least 3 binding +1s votes. The vote should stay open for at least 48 
hours.
    5. When the vote is closed, if the outcome is positive, the state of the
       proposal is updated and the Pull Requests associated with this proposal 
can
       start to get merged into the master branch.
   
   -->
   
   ## Motivation
   
   When designing NAR modules loaded by Nifi in the broker such as protocol 
handlers, proxy extensions, Pulsar IO connectors, etc..., it's important that 
the dependencies that are common to the module and the broker are as close as 
possible to prevent incompatible library exceptions (NoSuchClassError, 
NoSuchMethodError, IncompatibleClassChangeError, etc ...) at runtime. If a 
class is both in the NAR and in the broker, the broker one will be loaded.
   
   ## Goal
   
   This proposal is to define a BOM (Bill Of Materials) for Pulsar.
   A BOM is a special kind of POM that contains all the dependency versions 
that are used by the project and can be imported in another project. Currently 
there is a `dependencyManagement` section in Pulsar's parent POM but it's not 
always possible to derive from this parent POM as it imports a lot more things 
than the dependency versions and external projects usually prefer to have their 
own parent POM.
   External projects can import this BOM and use the same library versions as 
Pulsar at compile/test time.
   
   ## API Changes
   
   No API changes
   
   ## Implementation
   
   The `dependencyManagement` section of Pulsar's parent POM and related 
properties will be extracted in a POM and put in a `pulsar-bom` directory.
   The `pulsar-bom` artifact shall be built and released independently from the 
rest of Pulsar project (not a maven module).
   The Pulsar's parent POM `dependencyManagement` section is replaced by:
   ```xml
     <dependencyManagement>
       <dependencies>
   
         <dependency>
           <groupId>org.apache.pulsar</groupId>
           <artifactId>pulsar-bom</artifactId>
           <version>2.10.0-SNAPSHOT</version>
           <type>pom</type>
           <scope>import</scope>
         </dependency>
       </dependencies>
     </dependencyManagement>
   ```
   The CI will have to build `pulsar-bom` before building Pulsar.
   
   ## Reject Alternatives
   
   The BOM could be part of a distinct Git project. This would be harder to 
handle for contributions that modify both the BOM and Pulsar.
   


-- 
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]


Reply via email to