Hi everyone,

I'd like to open a discussion on PIP 141 : Pulsar BOM

The PIP is here : https://github.com/apache/pulsar/issues/14168

## 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:

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


Thanks a lot for your feedback !

Christophe

Reply via email to