Romain, The discussion is mainly about conflicts between Maven and user
plugins.
This can be fixed by either:
1. removing javax.inject from Guice and/or using another container with
reduced dependencies, or
2. ClassLoader level

I wrote a container in my company and wrote a test framework using beans,
Proxy, DI and IoC, transaction boundaries.
Not that difficult at all.

On Mon, Oct 14, 2019 at 1:56 PM Romain Manni-Bucau <rmannibu...@gmail.com>
wrote:

> Did you investigate the isolation between IoC beans and mojos? the IoC
> beans can see the maven/lib/jsr-whatever.jar whereas mojos can't see it -
> they dont use it - but can inject the beans.
> Mojo have a dedicated API so only issue is for the IoC so I guess it would
> make everyone happy to get the best of both worlds, no?
>
> 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. 14 oct. 2019 à 13:42, Olivier Lamy <ol...@apache.org> a écrit :
>
> > +1
> > I definitely agree with Stuart, This is a very simple API with a minimum
> of
> > interfaces and used a lot.
> > I guess we already did such mistake with Maven2 and Plexus :)
> > So it's only a matter of not replay history.
> > Who really wants to have to maintain another already existing library
> > whereas we already need people for what we have now.
> >
> > On Mon, 14 Oct 2019 at 21:37, Stuart McCulloch <mccu...@gmail.com>
> wrote:
> >
> > > Sorry, but why would you want to write your own version of javax.inject
> > > which is a very small static API supported by many injection systems,
> > both
> > > EE and non-EE
> > >
> > > It means you can't inject components written outside of Maven unless
> you
> > > write adapters or manually construct them.
> > >
> > > It also means that someone who wants to write an injectable component
> for
> > > Maven and re-use it elsewhere (such as with Spring) now needs to write
> > two
> > > versions.
> > >
> > > You'll spend a lot of time and end up with duplicate APIs for doing
> > exactly
> > > the same thing, when you could have just bumped the JSR-250 version and
> > > moved on.
> > >
> > > On Mon, 14 Oct 2019 at 12:22, Tibor Digana <tibordig...@apache.org>
> > wrote:
> > >
> > > > It would not be finally the same/identical list of annotations.
> > > > We do not have to copy everything, as for instance we do not have to
> > copy
> > > > descriptive methods, names of annotations, packages.
> > > > So custom annotations means that:
> > > > + we have all responsibility in our hands
> > > > + we do not have to rely on dead Java EE annotations
> > > > + we can add new annottaions tailored to our Maven domain (not EE
> > domain)
> > > >
> > > > We can erase some annotations, e.g.:
> > > > 1. https://docs.oracle.com/javaee/6/api/javax/inject/Named.html -
> not
> > > sure
> > > > if we use expressions with @Named beans
> > > > instead maybe we meant something like @javax.annotation.ManagedBean
> but
> > > it
> > > > is only my guess because @Named is useless without using expressions
> in
> > > the
> > > > code (not in POM).
> > > > 2. we can erase
> > > > https://docs.oracle.com/javaee/6/api/javax/inject/Scope.html
> > > > because we do not have e.g. HTTP Session, Conversation scope and Html
> > > > forms, we do not have Request Sope because we have our own lifecycle
> > with
> > > > phases. So again not very compatible with Maven domain. Usually we
> have
> > > > singletones and I have never seen scope of liveness of the bean
> > instances
> > > > in Maven. Maybe we would need to have a range of phases in the future
> > > where
> > > > the bean would be valid (from compile to process-classes) even in the
> > > > parallel Maven -T 2C, maybe.
> > > >
> > > > It's good that we have tried to adopt annotations from different
> domain
> > > and
> > > > IMHO the MNG-6084 is the experience that we should not repeat and
> > should
> > > > not again adopt foreign annotations (as here in non-EE container)
> from
> > > > non-Maven domains.
> > > >
> > > >
> > > > On Mon, Oct 14, 2019 at 12:43 PM Stuart McCulloch <mccu...@gmail.com
> >
> > > > wrote:
> > > >
> > > > > There are already equivalents, adding yet another "standard" that's
> > > > > specific to Maven is just like writing yet another logging API
> IMHO:
> > > > >
> > > > >    javax.annotation.Priority
> > > org.eclipse.sisu.Priority
> > > > >
> > > > >    javax.annotation.PostConstruct
> > > > >
> >  org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
> > > > >    javax.annotation.PreDestroy
> > > > >  org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable
> > > > >
> > > > >    (these last two are not totally equivalent since the Plexus API
> > uses
> > > > > interfaces instead of annotations, but they support the same goal)
> > > > >
> > > > > The container will work with or without JSR-250 on the classpath so
> > > this
> > > > is
> > > > > more about what you want to let plugin component authors to use. If
> > > > you're
> > > > > happy with them only using Maven specific annotations and having to
> > > > > retro-fit or add adapters when they want to use components outside
> of
> > > > Maven
> > > > > that use PostConstruct and PreDestroy then just roll back MNG-6084,
> > > > making
> > > > > sure to add a release note warning any plugin authors depending on
> > this
> > > > > feature that they will need to rewrite or adapt their plugins.
> > > > >
> > > > > Also note that this API is only exposed to plugins, it should _not_
> > be
> > > > > leaking onto the build classpath ... if it is then that's a bug. So
> > > this
> > > > > situation is specific to when a plugin either actively uses a
> > > dependency
> > > > > that wants a later version of JSR-250 or wants to use that later
> > > version
> > > > > itself.
> > > > >
> > > > > Since the JSR-250 API doesn't change much I still think just
> bumping
> > > the
> > > > > version in the distro is the simplest and less disruptive option.
> > > > >
> > > > > On Mon, 14 Oct 2019 at 11:03, Tibor Digana <tibordig...@apache.org
> >
> > > > wrote:
> > > > >
> > > > > > All these annotations are for Java EE containers and application
> > > > servers.
> > > > > > A clear solution in 4.0 or 5.0 would be to develop our own
> > > annotations
> > > > > for
> > > > > > Maven Domain (not EE domain) within or Java package.
> > > > > >
> > > > > > This way we would reach:
> > > > > > + annotations looking similar to EE annotations
> > > > > > + isolation on the package level
> > > > > > + the purpose of the annotations would match specific Maven
> domain
> > > > > > + the JavaDoc would not be EE specific anymore
> > > > > >
> > > > > > Many coleagues have negative opinion to my proposal but this was
> > only
> > > > > mine
> > > > > > view.
> > > > > >
> > > > > > On Mon, Oct 14, 2019 at 11:40 AM Stuart McCulloch <
> > mccu...@gmail.com
> > > >
> > > > > > wrote:
> > > > > >
> > > > > > > The JSR-250 API was exposed in
> > > > > > > https://issues.apache.org/jira/browse/MNG-6084
> > > > > > >
> > > > > > > It provides the @PostConstruct, @PreDestroy, and @Priority
> > standard
> > > > > > > extension annotations for use by plugin components.
> > > > > > >
> > > > > > > Isolating that API would affect any plugin components that rely
> > on
> > > > > > MNG-6084
> > > > > > > - they would then need to revert back to Initializable and
> > > Disposable
> > > > > > from
> > > > > > > the Plexus API (although note that the benefit of using a javax
> > API
> > > > is
> > > > > > that
> > > > > > > it makes components more reusable, especially when they come
> from
> > > > > outside
> > > > > > > the Maven ecosystem and just happen to be used in a Maven
> > plugin.)
> > > > > > >
> > > > > > > The best solution would be to either upgrade that dependency -
> or
> > > > > > > alternatively just expose the @PostConstruct, @PreDestroy, and
> > > > > @Priority
> > > > > > > annotation types rather than the whole package.
> > > > > > >
> > > > > > > On Mon, 14 Oct 2019 at 06:01, Romain Manni-Bucau <
> > > > > rmannibu...@gmail.com>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Guess it just comes from guice or friends and since they dont
> > > > support
> > > > > > > > recent API it was not upgraded.
> > > > > > > > We can upgrade it or just isolate it IMO - but requires some
> > > > careness
> > > > > > > since
> > > > > > > > custom components can use it so needs an evolution to toggle
> it
> > > > > > probably.
> > > > > > > >
> > > > > > > > Le lun. 14 oct. 2019 à 03:43, Tibor Digana <
> > > tibordig...@apache.org
> > > > >
> > > > > a
> > > > > > > > écrit :
> > > > > > > >
> > > > > > > > > It is a similar issue to the problem with "javax.inject"
> API.
> > > > > > > > > What about relocating these two APIs to a package
> > > > > "org.apache.maven"?
> > > > > > > Any
> > > > > > > > > thoughts?
> > > > > > > > >
> > > > > > > > > On Mon, Oct 14, 2019 at 12:11 AM Petar Tahchiev <
> > > > > > paranoia...@gmail.com
> > > > > > > >
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hello guys,
> > > > > > > > > >
> > > > > > > > > > I just decided to upgrade my build from 3.5.0 to 3.6.2
> last
> > > > night
> > > > > > > and I
> > > > > > > > > > stumbled across multiple problems, latest one being the
> > > > following
> > > > > > > > > > exception:
> > > > > > > > > >
> > > > > > > > > > Nested exception is java.lang.NoSuchMethodError:
> > > > > > > > > > javax.annotation.Resource.lookup()Ljava/lang/String;
> > > > > > > > > >
> > > > > > > > > > Seems like maven 3.6.2 comes with jsr-250-api-1.0.jar in
> > the
> > > > lib/
> > > > > > > > folder
> > > > > > > > > > and that seems to cause problems for me because I have
> > moneta
> > > > in
> > > > > my
> > > > > > > > > > classpath which brings newer version of jsr250:
> > > > > > > > > >
> > > > > > > > > > [INFO] --- maven-dependency-plugin:3.1.1:tree
> > (default-cli) @
> > > > > > > drmartens
> > > > > > > > > ---
> > > > > > > > > > [INFO] com.demo:drmartens:war:1.0-SNAPSHOT
> > > > > > > > > > [INFO] \-
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> com.nemesis.platform:nemesis-platform-core:jar:2.1.67.BUILD-SNAPSHOT:compile
> > > > > > > > > > [INFO]    \- org.javamoney:moneta:pom:1.3:compile
> > > > > > > > > > [INFO]       \-
> > > > > > > javax.annotation:javax.annotation-api:jar:1.3.2:compile
> > > > > > > > > > [INFO]
> > > > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> > ------------------------------------------------------------------------
> > > > > > > > > >
> > > > > > > > > > So I was able to fix this following this recommendation:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://stackoverflow.com/questions/52607814/how-to-remove-a-maven-lib-jsr250-api-1-0-jar-from-the-plugin-classpath-jetty
> > > > > > > > > > using extensions, but I was wondering: why do we need the
> > > > JSR250
> > > > > in
> > > > > > > the
> > > > > > > > > lib
> > > > > > > > > > folder? Also why do we need such an old version?
> > > > > > > > > > --
> > > > > > > > > > Regards, Petar!
> > > > > > > > > > Karlovo, Bulgaria.
> > > > > > > > > > ---
> > > > > > > > > > Public PGP Key at:
> > > > > > > > > >
> > > > > >
> > http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x19658550C3110611
> > > > > > > > > > Key Fingerprint: A369 A7EE 61BC 93A3 CDFF  55A5 1965 8550
> > > C311
> > > > > 0611
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
> > --
> > Olivier Lamy
> > http://twitter.com/olamy | http://linkedin.com/in/olamy
> >
>

Reply via email to