Great idea! +1 Il giorno mar 8 feb 2022 alle ore 12:18 Christophe Bornet < bornet.ch...@gmail.com> ha scritto:
> 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 > -- Nicolò Boschi