Howdy,

That said no issue, I will step down from this thread as you request, goal
> was just to try to not push in a way which will likely not solve the
> original issue and was hurting users by some projects having adopted this
> solution (bundle).


No, I did NOT ask you to "step down from this thread".
I asked you to clarify, elaborate and ideally show code use cases in your
responses.

Thanks
T

On Fri, Nov 3, 2023 at 4:45 PM Romain Manni-Bucau <rmannibu...@gmail.com>
wrote:

> Le ven. 3 nov. 2023 à 16:17, Tamás Cservenák <ta...@cservenak.net> a
> écrit :
>
> > Howdy,
> >
> > @Romain, it seems it is not only me alone having difficulties to
> understand
> > your responses, that are almost always rejecting the idea.
> >
> > I asked you to create a counter example (not "recipe" in prose), you did
> > not. When I joined this thread, I said clearly "this is hardly gonna
> happen
> > in Maven 3 lifespan" (as Maven3 internals are incapable of this) but you
> > bring in your "prose use cases" with Maven 3.x. All this just bloats the
> > thread, blurs it, creates noise, and produces the wrong perception in
> users
> > who are skimming this thread, and is maybe even causing people to abstain
> > from throwing in new ideas...
> >
>
> The detail point you forget is that since this is a partial solution either
> nobody cares of it today and it will not be adopted more than today (more
> later on that) or it will break in the future - I don't think we will want
> to drag this kind of hack for years, most people hope type handler does not
> bring logic - so maven 3 or maven 5 will break this. Maven 3 is just
> obvious and a case we must manage until maven 4 is out - we didn't decide
> yet if it is next year or in 5 years.
>
>
> >
> > So, Romain, I'd kindly ask you to cover your prose with code examples
> > instead, provide us actual and concrete use cases in code, stay on topic,
> > and please remain open for new ideas (I know or can imagine you may do
> > things differently today, but please, then showcase those "better
> > solutions" instead, so pointers to code please with explanation why are
> > those "better").
> >
>
> The thing is that projects also use modules (check out helidon, junit5,
> https://github.com/sormuras/testing-in-the-modular-world for trivial
> examples).
> None had issues with current logic for build but advanced cases need a fine
> control, not just the step you want to bring assuming it helps.
> See it as it is:
>
> * you don't really care, you want to deliver modules -> we do it, nothing
> special
> * you want to deliver modules with a fine control of the build "runtime" ->
> we are quite randomy there so we need to let the user toggle the exact
> command, it is possible but requires a lot of work...likely as much as
> defining configurations/types
>
> This is why originally I said this is likely not trying to solve any real
> issue which will end up in plugin configuration more than in the core pom.
>
> Also bring back the several 7-10 years old threads which request to make
> maven more flexible in its dependency management, we will not solve that.
> Javaagent, JPMS are just low hanging fruits but you have the same issues
> for frontend builds, webjars, and so on.
> I don't see us adding all that in maven core (it is where it must belong in
> your proposal to work).
>
> What would be nice and smooth is a hybrid between type and scope - but once
> again I strongly think type should stick to "how to read/map an artifact",
> one obvious example of that is the method isAddedToClasspath, it just means
> you will need to add one method per type you add, does not scale in terms
> of design nor enable to write extensions properly.
>
> The rational about the scope need is to add or not the artifact depending
> its type - think annotation processors, it wouldnt be shocking to not add
> them to the runtime until request.
> This is why I spoke of composition:
>
> * annotprocbuild=lombok,mapstruct-processor
> * annotprocrun=openjpa
> * realcompile=annotprocrun,compile
>
> and you pass realcompile as set identifier to compiler plugin, war plugin
> etc for example.
>
> But I'm happy with any solution not making maven with additional concept
> which are not design to scale in time.
>
> So my 2cts are that if you want to try an use case we don't handle you can
> likely try to solve it with type handle, promote it in an extension, see if
> it gets adoption and its pitfalls but in terms of design it is really not
> matching IMHO, it is more a hack in terms of concept.
>
> That said no issue, I will step down from this thread as you request, goal
> was just to try to not push in a way which will likely not solve the
> original issue and was hurting users by some projects having adopted this
> solution (bundle).
>
>
> >
> >
> > Thanks
> > T
> >
> >
> > On Thu, Nov 2, 2023 at 9:51 PM Martin Desruisseaux <
> > martin.desruisse...@geomatys.com> wrote:
> >
> > > Le 2023-11-02 à 20 h 07, Romain Manni-Bucau a écrit :
> > >
> > > > as of today libs can't ignore classpath cause it stays the majority
> of
> > > > consumers so it is "as if" in this thread IMHO.
> > > >
> > > Maven can't ignore classpath. But for artifact producers, it is up to
> > > them to decide. They may target a niche market. Or the library may be
> > > internal to a company. Or it may be a plugin for a JPMS application.
> > >
> > >
> > > > if you take the most common packaging which is the fatjar (agree it
> is
> > > > wrong for JPMS unrelated reason but still) it does not support a
> > > > single module.
> > > >
> > > Indeed, fatjar is problematic for JPMS. But the proposal does not block
> > > users from making fatjar anyway if all JPMS modules are
> > > classpath-compatible with the workarounds that I mentioned in my
> > > previous email. Only if some JPMS dependencies are not
> > > classpath-compatible, the user is blocked from making a fatjar. Whether
> > > the dependency is classpath-compatible or not is up to the library
> > > producer to decide, it is not our role to force them (see above point).
> > >
> > >
> > > >> Actually I think that keeping JPMS dependencies on the module-path
> is
> > > >> what should be done. If a user is nevertheless facing issues, giving
> > > >> him control is the whole point of the proposal.
> > > >>
> > > > Wait, this is what we have today then so we are good.
> > > >
> > > No, this is not what we have today. Current Maven behaviour is the
> > > opposite (put JPMS dependencies on the class-path if the consumer is
> not
> > > JPMS) with no way for the users to specify their needs.
> > >
> > >
> > > > But yes, one of both scenario is broken if you test it cause you
> > > > inherit a context whereas you can be consummed in two contexts so one
> > > > is always wrong until you redo the work...exactly as today so no gain
> > > > there.
> > > >
> > > I have difficulty to understand. I see no broken scenario if the
> library
> > > is designed for running on the module-path, and Maven indeed put the
> > > dependency on the module-path even for non-JPMS consumers. So what is
> > > broken exactly? Do the two contexts are "separated JAR files" versus
> > > "fatjar"? If yes, indeed as said above creating a fatjar may or may not
> > > work. But should we block JPMS because of fatjar?
> > >
> > >
> > > > Similarly your statement is right, "a dep on the module-path can be a
> > > > problem" is true as well so my opinion is we should respect the user
> > > > runtime (if not using jpms then don't set module-path).
> > >
> > > We can keep the debate about what should be the default location of a
> > > dependency for later. The key point is that we need user's control.
> > > Currently, users have no control.
> > >
> > >
> > > > Agree about having an uniform solution and this is why I mention that
> > > > using type is just about trying to fit the set notion in the current
> > > > model but without embracing the design which makes it solving the
> > > > issue (assinging a set per "path" need).
> > > >
> > > Both the Set proposal and the <type> proposal would work. I have not
> yet
> > > seen an argument against the <type> proposal that I could understand.
> On
> > > the other side, I see three arguments in favour of <type>:
> > >
> > >   * It does not introduce new elements in the POM model, it only
> extends
> > >     the use of an existing element.
> > >   * It does not force users to care about class-path/module-path
> > >     distinction when the default behaviour works for them. By contrast,
> > >     the Set approach forces all users to care about that distinction,
> > >     even when not necessary.
> > >   * It keeps the "dependency set" concept available for business logic,
> > >     without forcing users to mix their business logic with
> > >     class-path/module-path concerns.
> > >
> > > Martin
> > >
> > >
> >
>

Reply via email to