Romain,

Could you draft an example project that proves or at least showcases your
points?
It's probably me, but I don't get your responses :(

WTH is "lifecycle of your project graph"?

But really, could you draft an example project that showcases your points?

T

On Thu, Nov 2, 2023 at 2:08 PM Romain Manni-Bucau <rmannibu...@gmail.com>
wrote:

> Le jeu. 2 nov. 2023 à 13:59, Tamás Cservenák <ta...@cservenak.net> a
> écrit :
>
> > Howdy,
> >
> > "not upgrading maven" can simply be extrapolated to "not upgrading java",
> > so what are we talking about at all here? Imposing illogical requirements
> > really does not make sense.
>
>
> (today) I'm writing app A, and I'm depending on helidon. I'm using java 17
> and maven 3.9 (last stables when project was setup).
>
> Tomorrow helidon switched to type=module cause it fits better their build.
>
> I'm expecting my app A to still work at helidon new release, just edit
> <helidon.version> and be it....but boom, it just breaks cause module is an
> unknown type without a handler.
>
>
> > The whole point of mvn4 is to allow progress at
> > the same time not excluding the mvn3 universe (consumer POM).
> >
>
> Progress on the *build*, not much on consuming side cause it can only work
> for a version then and we are doomed.
>
>
> > "transitivity is broken" again, it ends where you declare it as explained
> > above, so am really unsure where we miss each other.
> >
>
> No no, think lifecycle of your project graph, this becomes insane to do
> that at that level in real life so really hope we avoid it.
>
>
> >
> > Could you draft an example project that proves your points?
> >
> > Thanks
> > T
> >
> > On Thu, Nov 2, 2023 at 1:52 PM Romain Manni-Bucau <rmannibu...@gmail.com
> >
> > wrote:
> >
> > > Just as a reminder:
> > >
> > > * type=module breaks downstream consumers not upgrading maven
> > > * transitivity is broken since everything ends in modulepath whereas in
> > > most cases you want it in the classpath
> > >
> > > So really we should move forward on something else than artifact
> > definition
> > > as the sole solution if we want to support jpms as a first citizen
> (once
> > > again no issue for me to not do, my current main issue is to introduce
> > > something making builds more complex and not solving end users issue).
> > >
> > > 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 jeu. 2 nov. 2023 à 13:25, Tamás Cservenák <ta...@cservenak.net> a
> > > écrit :
> > >
> > > > Just to chime in to Martin thoughts:
> > > >
> > > > - yes, the default "type" is still "jar" (so if you omit type, "jar"
> is
> > > > applied as today)
> > > > - transitivity: yes, as I show above, project-impl [type=module]
> > depends
> > > on
> > > > project-api [type=module] so the whole tree lands on "modulepath".
> > > > - override: exactly as Martin says, if you want to override and have
> > > > project-api on classpath, just override it
> > > > - I wanted to expand the "status" plugin to show more info, but hit
> > some
> > > > issues with mvn4 API current state, so I am looking into that
> first...
> > > >
> > > > On Thu, Nov 2, 2023 at 1:20 PM Martin Desruisseaux <
> > > > martin.desruisse...@geomatys.com> wrote:
> > > >
> > > > > Le 2023-11-02 à 12 h 53, Romain Manni-Bucau a écrit :
> > > > >
> > > > > > You would also note that using "type" *forces* users to care
> about
> > > > > > this separation too in an unexpected way.
> > > > > >
> > > > > Type is an optional element. The use of <type>module</type> is a
> > > > > workaround for the heuristic rules sometime doing the wrong choice.
> > But
> > > > > <type> could continue to be optional if users have control over
> those
> > > > > rules (that would be a separated thread), with <type> used only
> when
> > > > > fine-grained control is desired.
> > > > >
> > > > >
> > > > > > I import helidon (which is fully jpms friendly) so I get
> > > > > > helidon-server on the module-path but helidon-common on the
> > > classpath?
> > > > > > (indeed keep in mind if you fix this you will get the opposite
> case
> > > > > > blowing up).
> > > > > >
> > > > > Whether to put helidon-common on module-path would be determined by
> > the
> > > > > <dependency> declaration in the helidon.pom file. That file already
> > > > > needs to be read anyway for finding the helidon-common transitive
> > > > > dependency. Users can override if desired by adding their own
> > > > > <dependency> declaration in their project, in the same way as we
> can
> > > > > override dependency versions today.
> > > > >
> > > > >
> > > > > > Also keep in mind the pom modification is *not* an option as
> > > commented
> > > > > > and would mean the consumer depends on the consumed artifact
> which,
> > > we
> > > > > > saw it, is not the case at all with java modules
> > > > > >
> > > > > I do not understand this part. Consumer already depends on consumed
> > > > > artifact, since it determines transitive dependencies. The use of
> > JPMS
> > > > > changes nothing here.
> > > > >
> > > > >
> > > > > > 90% will want modules on classpath
> > > > > >
> > > > > I think it is more "90% does not care as long as it works". If a
> > > library
> > > > > has been designed in such a way that it needs to be on the module
> > path
> > > > > for working properly, I think that most users would be happy to let
> > > > > Maven do the right thing according the metadata found in POM files,
> > and
> > > > > be explicit with <type> only if they need to.
> > > > >
> > > > >
> > > > > > So at the end we are exactly in the current (doing no change at
> > all)
> > > > > > situation where you need to tune all your stack to be stable,
> > > reliable
> > > > > > and properly handled.
> > > > > >
> > > > > No, the current situation is that we cannot tune the classpath and
> > > > > module-path. There is no way I could see to override the decision
> > taken
> > > > > by the current heuristic rules.
> > > > >
> > > > >      Martin
> > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to