A PoC being always better than a mail, here is the demo of what I am
talking about: https://github.com/rmannibucau/portable-transformer

Both integrations have an IT with should help to see how it works if the
readme is not enough

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mar. 16 juil. 2019 à 01:03, Lennart Jörelid <lennart.jore...@gmail.com>
a écrit :

> It could make a lot of sense, Romain - and fine in terms of Shadow/Shade
> reuse.
>
> On Mon, Jul 15, 2019 at 8:09 PM Romain Manni-Bucau <rmannibu...@gmail.com>
> wrote:
>
> > It is simpler actually, in pseudo code it is:
> >
> > <plugin>
> >    ....shade plugin gav...
> >   <configuration>
> >     <transformers>
> >       <transformer class="org.foo.MyPortableTfr" ....attributes />
> >     <transformers>
> >   </configuration>
> > </plugin>
> >
> > And exactly the same MyPortableTfr in shadow gradle plugin.
> > Maven just wraps org....portable.Transformer implementations in native
> mvn
> > shade Transformers forwarding attributes through a factory in guice or
> > equivalent.
> >
> > Topic is not about bridging mvn and gradle but maven shade and shadow
> > plugins together only.
> >
> > Does it make more sense?
> >
> > Le lun. 15 juil. 2019 à 17:08, Tibor Digana <tibordig...@apache.org> a
> > écrit :
> >
> > > Hi Lenant,
> > >
> > > The plugin looks like this in POM:
> > >
> > > <plugin>
> > >     ... implements="pkg.ResolverImpl"...
> > >     ~~~ plugin dependencies ~~~
> > >     <dependency>
> > >         groupId,artifactId,version ~~~ for ~~~ artifact ~~~ having ~~~
> > > pkg.ResolverImpl.class ~~~
> > >     </dependency>
> > > </plugin>
> > >
> > > So " implements" is already the extention style.
> > > The class ResolverImpl should inherit the API from a separate API
> > artifact.
> > >
> > > So the separation concern (plugin implementation and API) means that
> the
> > > SPI is not need and the patch is directly applied to the particular
> > plugin
> > > (and plugin execution), not the whole JVM as in case of SPIs.
> > >
> > > If somebody does not want to use POM, still the API is the keypoint.
> > > Somebody who deploys the artifact in dependency has to write facade or
> > > adapter between this API in Maven and Gradle or whatever else.
> > >
> > > I thik this is meant by Romain.
> > >
> > > Honestly, i am not a fan or embedding these Gradle adapters in Maven,
> and
> > > quite pessimistic, because doing such things would mean that the API
> > > (whatever it means) is a "beton". One endpoint wins and second will
> loose
> > > because any change breaks the world. So therefore a 3rd party (equal
> devs
> > > from Maven + Gradle project) should be the adapter artifact/project,
> and
> > > his speed of development and release matters how fast he reacts on
> > changes
> > > from both.
> > >
> > > Cheers
> > > Tibor
> > >
> > > On Mon, Jul 15, 2019 at 3:13 PM Romain Manni-Bucau <
> > rmannibu...@gmail.com>
> > > wrote:
> > >
> > > > Hello Lennart,
> > > >
> > > > Do you have an example where transformer abstraction can be messing
> for
> > > > existing transformers?
> > > > Goal here is not to abstract the build system but the user extensions
> > for
> > > > two particular plugins.
> > > >
> > > > Romain Manni-Bucau
> > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > > <http://rmannibucau.wordpress.com> | Github <
> > > > https://github.com/rmannibucau> |
> > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > > <
> > > >
> > >
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > > > >
> > > >
> > > >
> > > > Le lun. 15 juil. 2019 à 14:58, Lennart Jörelid <
> > > lennart.jore...@gmail.com>
> > > > a écrit :
> > > >
> > > > > I'd say it would - nowadays - always be a good idea to split the
> > > plugins
> > > > > into an API-or-SPI part where the meat of the functionality is
> > located
> > > -
> > > > > and an Implementation-Per-Build-System part (i.e. an *x-spi*,
> > > > > *x-maven-plugin* and *x-gradle-plugin* type of structure).
> > > > >
> > > > > However, the underpinnings of most known build systems would be in
> > need
> > > > of
> > > > > an abstraction layer themselves for those kinds of operation to
> work
> > > > > smoothly... and at the moment they are not exactly harmonized to a
> > > level
> > > > > where cross-buildsystem development is necessarily trivial. As an
> > > > example,
> > > > > compare the semantics for transitive dependencies between Maven and
> > > > Gradle.
> > > > > It is currently not trivial to - say - modify the execution
> > environment
> > > > for
> > > > > a plugin in a consistent manner across build systems.
> > > > >
> > > > > That being said, I guess there is quite a bit of simplification to
> be
> > > > > gained in terms of reusing implemented algorithms, even if adapting
> > > said
> > > > > implementation to Maven or Gradle or SBT or ... whatever ...
> quickly
> > > can
> > > > > get rather messy.
> > > > >
> > > > > On Fri, Jul 12, 2019 at 8:30 PM Romain Manni-Bucau <
> > > > rmannibu...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > Hello (again) everyone,
> > > > > >
> > > > > > Gradle shadow plugin - kind of shade plugin for gradle - forked
> > > Apache
> > > > > > Maven Shade ResourceTransformer to enrich it ([1]).
> > > > > >
> > > > > > By itself it is ok but I wonder if we couldn't launch a kind of
> > > > > abstraction
> > > > > > to let people code once and use the transformer - needed by
> > > libraries -
> > > > > in
> > > > > > both plugins and build tools.
> > > > > >
> > > > > > It would consist of the following parts:
> > > > > >
> > > > > > 1. Transformer API (likely something very close of our current
> > > resource
> > > > > > transformer),
> > > > > > 2. Some common  transformer using 1.,
> > > > > > 3. A generic ResourceTransformerWrapper able to instantiate a
> > > > Transformer
> > > > > > coded with 1. and wire its lifecycle in a plain shade
> > > > ResourceTransformer
> > > > > > (likely the same on shadow side).
> > > > > >
> > > > > > Any interest doing that here?
> > > > > > If so, should it be hosted in maven-shade-plugin project making
> it
> > a
> > > > > > multi-module project?
> > > > > >
> > > > > > [1]
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/johnrengelman/shadow/blob/master/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/Transformer.groovy#L26
> > > > > >
> > > > > > Romain Manni-Bucau
> > > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > > > > <http://rmannibucau.wordpress.com> | Github <
> > > > > > https://github.com/rmannibucau> |
> > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > --
> > > > > +==============================+
> > > > > | Bästa hälsningar,
> > > > > | [sw. "Best regards"]
> > > > > |
> > > > > | Lennart Jörelid
> > > > > | EAI Architect & Integrator
> > > > > |
> > > > > | jGuru Europe AB
> > > > > | Mölnlycke - Kista
> > > > > |
> > > > > | Email: l...@jguru.se
> > > > > | URL:   www.jguru.se
> > > > > | Phone
> > > > > | (skype):    jgurueurope
> > > > > | (intl):     +46 708 507 603
> > > > > | (domestic): 0708 - 507 603
> > > > > +==============================+
> > > > >
> > > >
> > >
> >
>
>
> --
>
> --
> +==============================+
> | Bästa hälsningar,
> | [sw. "Best regards"]
> |
> | Lennart Jörelid
> | EAI Architect & Integrator
> |
> | jGuru Europe AB
> | Mölnlycke - Kista
> |
> | Email: l...@jguru.se
> | URL:   www.jguru.se
> | Phone
> | (skype):    jgurueurope
> | (intl):     +46 708 507 603
> | (domestic): 0708 - 507 603
> +==============================+
>

Reply via email to