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