> It is not clear to me who is the consumer of this BOM.

I was thinking that using a Maven BOM file [1] could be useful when
implementing "PIP 62: Move connectors, adapters and Pulsar Presto to
separate repositories" [2].
Pulsar Adapters is the only part of PIP-62 that has been moved. The
duplication of dependencies in Pulsar Adapters pom.xml [3] is a good
example why a Pulsar BOM could be useful in implementing PIP-62.

-Lari

1 -
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms
2 -
https://github.com/apache/pulsar/wiki/PIP-62%3A-Move-connectors%2C-adapters-and-Pulsar-Presto-to-separate-repositories
3 -
https://github.com/apache/pulsar-adapters/blob/195d12552f9d168072a2ed830a69f5373e9655af/pom.xml#L108-L218

On Mon, Feb 14, 2022 at 5:25 PM Enrico Olivelli <eolive...@gmail.com> wrote:

> Christophe,
> It is not clear to me who is the consumer of this BOM.
>
> Java clients should depend on pulsar-client
> Pulsar IO and Functions have their own dependencies.
>
> So what's the target? Protocol Handlers? Servlets? Proxy extensions?
>
>
> Enrico
>
> Il Lun 14 Feb 2022, 15:05 Nicolò Boschi <boschi1...@gmail.com> ha scritto:
>
> > 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
> >
>

Reply via email to