Le lun. 22 mars 2021 à 20:49, Martin Kanters <martinkant...@apache.org> a
écrit :

> Alright, there indeed are specific problems that cannot be solved with
> -pl. Then again the automatic recursiveness does give benefit that we
> didn't have in 3.6.3.
> Your problem can be solved using profiles, multiple invocations, exact -pl
> module specifications or different directory formats.
>

Profiles are almost never a solution since they break the build by not
being activated automatically - until we have alias but I fear this would
be a long dicussion for a core feature.
Exact -pl is not maintenable compared to current solution which works fine.
Changing the project structure because we break the CLI would be a shame
IMHO.


> I guess there is no silver bullet, at least we did not find one. We have
> to continue at some point, though. Personally I've heard more people in
> favor of the -N solution than against.
>

I would have been in this camp if it was not breaking any existing usage
but it does so we just introduced a bug we must fix for next release...does
not sound like something better.


> We can always improve later on, if we have found a better solution.
>

Works for me while it is before next release (= we don't break any *end
user* without a proper solution compared to the working solution of today
and likely without any breaking change which would be the worst we can do
as a build tool - plugin level is another topic where it can be more
flexible).

Side note: the -plN (or whatever name it gets) was not shocking and solving
all these issues more properly than a global toggle which can't solve the
backward compatibility point by construction.


>
> Op ma 22 mrt. 2021 om 17:51 schreef Romain Manni-Bucau <
> rmannibu...@gmail.com>:
>
>>
>>
>> Le lun. 22 mars 2021 à 16:07, Martin Kanters <martinkant...@apache.org>
>> a écrit :
>>
>>> Err, let's keep using examples to avoid miscommunication :p If I
>>> understand you correctly, you mean this:
>>>
>>> root:
>>> ... images:
>>> ........ image-a
>>> ........ image-b
>>> ... assemblies:
>>> ........ assembly-a
>>> ........ assembly-b
>>>
>>> When running from root, you can use:
>>>
>>> > mvn <goal> -pl !root,!images,!assemblies -N
>>>
>>> This will build image-a, image-b, assembly-a, assembly-b. It skips all
>>> three aggregators.
>>>
>>
>> Add root/foo/{a,b} module in the picture - or more a real case is
>> images/subparent/* and images/{all but subparent} - this is the broken case.
>> basically in other words, it only works for flat cases (one level) but
>> not in all other cases - this is why -N is not a solution to the issue as
>> discussed in this thread.
>>
>>>
>>> By the way, -pl !xxx,yyy is still perfectly possible.
>>>
>>> Martin
>>>
>>> Op ma 22 mrt. 2021 om 15:47 schreef Romain Manni-Bucau <
>>> rmannibu...@gmail.com>:
>>>
>>>>
>>>>
>>>> Le lun. 22 mars 2021 à 15:03, Martin Kanters <martinkant...@apache.org>
>>>> a écrit :
>>>>
>>>>> Hey Romain,
>>>>>
>>>>> Your example will work with -N when MNG-7112 [1] is implemented (which
>>>>> we
>>>>> are working on as we speak).
>>>>> MNG-7112 says: -N together with a project exclusion (via -pl) will
>>>>> make the
>>>>> project exclusion non-recursive. So it will not exclude the children.
>>>>> Following your example,
>>>>>
>>>>> > cd images-parent && mvn myplugin:mygoal -pl '!images-parent' *-N*
>>>>>
>>>>> will work. It will only build the children of images-parent. -N will
>>>>> apply
>>>>> to -pl when -pl is present.
>>>>>
>>>>> That said, -N without -pl will work as it works in 3.6.3: only the pom
>>>>> in
>>>>> the current directory will be built (or the pom specified with -f).
>>>>>
>>>>> I hope this clears it up,
>>>>>
>>>>
>>>> Not really - but my example was maybe not perfect :s - it works only in
>>>> the case you enter images folder but typically, as almost mentionned ;) -
>>>> this is often used for images + assemblies (2 submodule trees) and it works
>>>> today, if I add -N it will not work anymore and I can't do -pl parent -plN
>>>> '!parent' so I'm still blocked or do you see a way to make current behavior
>>>> working as expected? Or do you mean if I use -pl -xxx I can't use -pl yyy
>>>> anymore (both became exclusive which would be another blocker for me).
>>>>
>>>>
>>>>> Martin
>>>>>
>>>>> [1] https://issues.apache.org/jira/browse/MNG-7112
>>>>>
>>>>> Op ma 22 mrt. 2021 om 13:26 schreef Romain Manni-Bucau <
>>>>> rmannibu...@gmail.com>:
>>>>>
>>>>> > Hi,
>>>>> >
>>>>> > Just saw the PR was merged but it is actually still a regression,
>>>>> what's
>>>>> > the plan to keep this kind of build working:
>>>>> >
>>>>> > Structure:
>>>>> >
>>>>> > . root
>>>>> >  |- core
>>>>> >  |- ...
>>>>> >  `- images-parent // can be assemblies too or anything else
>>>>> >         |- image1
>>>>> >         |- ...
>>>>> >         `- imageN
>>>>> >
>>>>> > > cd images-parent && mvn myplugin:mygoal -pl '!images-parent'
>>>>> >
>>>>> > This command has the big advantage to launch a command on all
>>>>> children but
>>>>> > the root pom (where the plugin would fail - note in practise it is a
>>>>> > combination of N plugins in general).
>>>>> >
>>>>> > You mentionned '-N' which does not solve this new bug AFAIK, a
>>>>> profile does
>>>>> > not as well, a skip property or any additional requirement on mojo
>>>>> are
>>>>> > indeed undersired, so what is the plan to get back to something
>>>>> functional?
>>>>> >
>>>>> > 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 dim. 28 févr. 2021 à 11:57, Romain Manni-Bucau <
>>>>> rmannibu...@gmail.com>
>>>>> > a
>>>>> > écrit :
>>>>> >
>>>>> > >
>>>>> > >
>>>>> > > Le dim. 28 févr. 2021 à 10:15, Robert Scholte <
>>>>> rfscho...@apache.org> a
>>>>> > > écrit :
>>>>> > >
>>>>> > >> We should be talking about consistency.
>>>>> > >> We have a flag --non-recursive, which implies that recursive is
>>>>> the
>>>>> > >> default.
>>>>> > >> With Maven 3 that is just not always the case and this should be
>>>>> fixed.
>>>>> > >> Maven 4 is the right version to do so.
>>>>> > >>
>>>>> > >> Using -pl <arg> -N does not work with Maven 3: it'll say
>>>>> "Couldn't find
>>>>> > >> the selected project in the reactor"
>>>>> > >> Being able to use this combination AND making -pl recursive by
>>>>> default
>>>>> > >> makes everything consistent.
>>>>> > >>
>>>>> > >
>>>>> > > Can be seen this way so choice is between consistency and backward
>>>>> > > compatibility, I'm clearly favoring last one which would be way
>>>>> more
>>>>> > costly
>>>>> > > in the ecosystem than the first one as of today (plus it is not
>>>>> that
>>>>> > > inconsistent today since it either works or is forbidden).
>>>>> > >
>>>>> > >
>>>>> > >>
>>>>> > >> The argument that this change will break backwards compatibility
>>>>> is less
>>>>> > >> important to me and is actually not true. By switching to
>>>>> recursive by
>>>>> > >> default and calling -pl <module> it will still build the module
>>>>> ... and
>>>>> > >> more. We're not building less!
>>>>> > >>
>>>>> > >
>>>>> > > But we break a lot which is the worse a so much used project  as
>>>>> Maven
>>>>> > can
>>>>> > > do for a new major.
>>>>> > >
>>>>> > >
>>>>> > >>
>>>>> > >> The question you need to ask yourself every time in case of a pom
>>>>> > >> packaged project:
>>>>> > >> Do I want to build the parent? call -pl <arg> -N
>>>>> > >> Do I want to build the aggregated modules call -pl <arg>
>>>>> > >>
>>>>> > >> Consistency is key: ensure that you can always add
>>>>> --non-recursive/-N.
>>>>> > >> This will always and only build the selected projects, no
>>>>> exclusions,
>>>>> > and
>>>>> > >> otherwise it'll be recursive.
>>>>> > >>
>>>>> > >
>>>>> > > pl definition is about built module so you enforce consistency
>>>>> changing
>>>>> > > the definition which is unfair and really the impact is not
>>>>> blocking
>>>>> > since
>>>>> > > the fix is not hard but really bothering for *no* new feature on
>>>>> user
>>>>> > land
>>>>> > > so I really prefer the alternatives.
>>>>> > >
>>>>> > >
>>>>> > >>
>>>>> > >> Robert
>>>>> > >>
>>>>> > >> On 26-2-2021 14:45:18, Romain Manni-Bucau <rmannibu...@gmail.com>
>>>>> > wrote:
>>>>> > >> Le ven. 26 févr. 2021 à 14:30, Robert Scholte a
>>>>> > >> écrit :
>>>>> > >>
>>>>> > >> > This discussion is about aggregators, and not about parent.
>>>>> > >> > Quite often an aggregator is also the parent of its modules,
>>>>> but that
>>>>> > is
>>>>> > >> > not required.
>>>>> > >> >
>>>>> > >>
>>>>> > >> Ack
>>>>> > >>
>>>>> > >>
>>>>> > >> >
>>>>> > >> > Calling -pl with Maven3 behaves unnatural: if you want to
>>>>> > >> > call a specific aggregator, you want its modules to be built.
>>>>> > >> >
>>>>> > >>
>>>>> > >> I disagree, it looks unatural if you know it is an aggregator but
>>>>> there
>>>>> > is
>>>>> > >> no way to know form maven standpoint, it is a pom which children
>>>>> and
>>>>> > with
>>>>> > >> packaging=pom which does not mean it is an aggregator.
>>>>> > >> To give a quick example of that: the strict aggregator case will
>>>>> desire
>>>>> > to
>>>>> > >> build children but not the aggregator itself (functionally)
>>>>> whereas all
>>>>> > >> other cases want the pom itself.
>>>>> > >>
>>>>> > >>
>>>>> > >> >
>>>>> > >> > Hence I still support the change to make this the default
>>>>> behavior.
>>>>> > >> >
>>>>> > >> > In those rare cases where you want to build it only because it
>>>>> is a
>>>>> > >> parent
>>>>> > >> > (and not for the aggregator part), it makes sense to add
>>>>> > --non-recursive
>>>>> > >> >
>>>>> > >>
>>>>> > >> It is not rare, it is actually very very common to use it as a
>>>>> prestep
>>>>> > on
>>>>> > >> CI builds and the new behavior break it all.
>>>>> > >> Since the value of pl is already an expression
>>>>> ([groupId]:artifactId),
>>>>> > it
>>>>> > >> is saner to use it and enrich this semantic to support "project
>>>>> with
>>>>> > >> child"
>>>>> > >> meaning for end users IMHO.
>>>>> > >>
>>>>> > >>
>>>>> > >> >
>>>>> > >> > All the options you had in Maven 3 for selecting a subset of a
>>>>> > >> multimodule
>>>>> > >> > project are still available in Maven 4.
>>>>> > >> >
>>>>> > >>
>>>>> > >> Maven 4 is not an opportunity to break existing builds IMHO, it
>>>>> would
>>>>> > >> deserve maven, it is an opportunity to break internals and build
>>>>> > pipeline
>>>>> > >> for sure.
>>>>> > >>
>>>>> > >>
>>>>> > >> >
>>>>> > >> > To me the new behavior is much better. Maven 4 is the perfect
>>>>> version
>>>>> > to
>>>>> > >> > introduce these changes.
>>>>> > >> >
>>>>> > >> > thanks,
>>>>> > >> > Robert
>>>>> > >> >
>>>>> > >> >
>>>>> > >> >
>>>>> > >> >
>>>>> > >> > On 26-2-2021 14:02:29, Romain Manni-Bucau wrote:
>>>>> > >> > I still think it is wrong to have such a global toggle + break
>>>>> > backward
>>>>> > >> > compatibility (-pl + -N is *already* used for what it is today
>>>>> which
>>>>> > is
>>>>> > >> not
>>>>> > >> > the proposal but -pl parent without -N is also already used and
>>>>> works
>>>>> > >> > well).
>>>>> > >> > You can also take into consideration that -pl -module -N
>>>>> meaning is
>>>>> > >> > completely broken with this new definition.
>>>>> > >> > For these 3 reasons I think we shouldn't break current API and
>>>>> either
>>>>> > >> add a
>>>>> > >> > new toggle/syntax (>parent or !!parent or whatever forbidden
>>>>> character
>>>>> > >> in
>>>>> > >> > module names/folder fits you) or not do anything since nothing
>>>>> > prevents
>>>>> > >> to
>>>>> > >> > build a subtree with -pl as of today, it is just a bit more
>>>>> verbose
>>>>> > >> than a
>>>>> > >> > single module selection.
>>>>> > >> >
>>>>> > >> > Romain Manni-Bucau
>>>>> > >> > @rmannibucau | Blog
>>>>> > >> > | Old Blog
>>>>> > >> > | Github |
>>>>> > >> > LinkedIn | Book
>>>>> > >> >
>>>>> > >> >
>>>>> > >> >
>>>>> > >> > Le ven. 26 févr. 2021 à 13:16, Martin Kanters a
>>>>> > >> > écrit :
>>>>> > >> >
>>>>> > >> > > I've had a talk this morning with Robert Scholte and Maarten
>>>>> Mulders
>>>>> > >> > about
>>>>> > >> > > this, since I had the feeling we were not getting further in
>>>>> this
>>>>> > mail
>>>>> > >> > > thread.
>>>>> > >> > >
>>>>> > >> > > First of all, we all agreed that we definitely needed
>>>>> functionality
>>>>> > >> for
>>>>> > >> > > both recursive and non-recursive project selection. What
>>>>> Robert
>>>>> > >> prefers
>>>>> > >> > is
>>>>> > >> > > the following: reusing existing flags if possible and no
>>>>> extra magic
>>>>> > >> in
>>>>> > >> > the
>>>>> > >> > > -pl syntax. So that boils down to "-pl + -N". By default,
>>>>> project
>>>>> > >> > selection
>>>>> > >> > > will be recursive and by passing -N to it, it will be
>>>>> switched to
>>>>> > >> > > non-recursive.
>>>>> > >> > >
>>>>> > >> > > While first I was hesitant on this solution, I realize now
>>>>> that this
>>>>> > >> is
>>>>> > >> > the
>>>>> > >> > > most user-friendly solution. Technically -N might mean
>>>>> different
>>>>> > >> things
>>>>> > >> > > when used with and without -pl, but functionally it's the
>>>>> same.
>>>>> > >> > >
>>>>> > >> > > Two points of concern were:
>>>>> > >> > > - "it's a global switch, we cannot select a recursive and
>>>>> > >> non-recursive
>>>>> > >> > > project in one maven-command". That's true, but that's
>>>>> currently
>>>>> > also
>>>>> > >> not
>>>>> > >> > > possible in 3.6.3 (automatically) and we should find the
>>>>> balance
>>>>> > >> between
>>>>> > >> > > usability and ensuring every possible scenario is possible.
>>>>> > >> > > - "it might cause a performance degradation". This is not
>>>>> true when
>>>>> > >> the
>>>>> > >> > > current behavior of -N will only change when used together
>>>>> with -pl.
>>>>> > >> > >
>>>>> > >> > > We’ll continue work in this direction. Feel free to raise any
>>>>> new
>>>>> > >> > concerns
>>>>> > >> > > if they arise.
>>>>> > >> > >
>>>>> > >> > > Martin
>>>>> > >> > >
>>>>> > >> > > Op zo 21 feb. 2021 om 22:29 schreef Romain Manni-Bucau
>>>>> > >> > > rmannibu...@gmail.com>:
>>>>> > >> > >
>>>>> > >> > > > Put some comments inline but agree another minilanguage
>>>>> solution
>>>>> > >> works.
>>>>> > >> > > > Maybe -pl !!parent?
>>>>> > >> > > >
>>>>> > >> > > > Le dim. 21 févr. 2021 à 22:08, Martin Kanters
>>>>> > >> > > a
>>>>> > >> > > > écrit :
>>>>> > >> > > >
>>>>> > >> > > > > Romain: 2 has overlap if I'm not mistaken, what if the
>>>>> user
>>>>> > >> invokes:
>>>>> > >> > > mvn
>>>>> > >> > > > > -pl project-a -plr !project-a. Perhaps the user should be
>>>>> able
>>>>> > to
>>>>> > >> > only
>>>>> > >> > > > > select aggregator poms via -plr..
>>>>> > >> > > > > And I'm not sure how the alias function would work. I
>>>>> assume
>>>>> > >> > something
>>>>> > >> > > > > like:
>>>>> > >> > > > >
>>>>> > >> > > >
>>>>> > >> > > > Yes but same as today with -pl foo -pl!foo. We can fail in
>>>>> such a
>>>>> > >> case
>>>>> > >> > > too
>>>>> > >> > > > (my preference). Then more specific wins, ie -plr parent -pl
>>>>> > >> > !parent/foo
>>>>> > >> > > is
>>>>> > >> > > > obvious.
>>>>> > >> > > >
>>>>> > >> > > >
>>>>> > >> > > > - pom.xml config (psuedo code): -pl parent, submodule-a,
>>>>> > >> > > > > submodule-b, submodule-c
>>>>> > >> > > > > - invocation mvn alias:rec.
>>>>> > >> > > > > If that assumption is correct, the user would have to
>>>>> manually
>>>>> > >> > maintain
>>>>> > >> > > > the
>>>>> > >> > > > > list of modules of "parent", while Maven can do this
>>>>> perfectly.
>>>>> > >> > > > >
>>>>> > >> > > >
>>>>> > >> > > > Right, is it an issue? I dont think. Opposite is true too,
>>>>> you
>>>>> > need
>>>>> > >> to
>>>>> > >> > > > maintain children exclusions in general (all but "build"
>>>>> child
>>>>> > >> module
>>>>> > >> > or
>>>>> > >> > > > all but front or all but doc etc) so 1-1 IMHO.
>>>>> > >> > > >
>>>>> > >> > > >
>>>>> > >> > > > > Falko: I don't intend to drop the recursive behavior
>>>>> either :)
>>>>> > >> > > > > I don't dislike the idea of adding a suffix to a project
>>>>> to
>>>>> > >> include
>>>>> > >> > > > > everything recursively and + might fix the shell
>>>>> expansion issue
>>>>> > >> > > (which *
>>>>> > >> > > > > has).
>>>>> > >> > > > > I guess this might be a nice alternative as well, but I'm
>>>>> not
>>>>> > >> sure if
>>>>> > >> > > > > everybody likes increasing the complexity of the -pl
>>>>> syntax.
>>>>> > "-pl
>>>>> > >> > > > !?proj/+"
>>>>> > >> > > > > or "-pl !?group:artifact+" is starting to look a bit like
>>>>> > magic..
>>>>> > >> :)
>>>>> > >> > > >
>>>>> > >> > > >
>>>>> > >> > > > > Martin
>>>>> > >> > > > >
>>>>> > >> > > > > Op zo 21 feb. 2021 om 21:38 schreef Falko Modler :
>>>>> > >> > > > >
>>>>> > >> > > > > > My 2 cents: Please don't drop the recursive behavior
>>>>> again
>>>>> > >> because
>>>>> > >> > it
>>>>> > >> > > > is
>>>>> > >> > > > > > really useful!
>>>>> > >> > > > > >
>>>>> > >> > > > > > Crazy idea (just brainstorming here):
>>>>> > >> > > > > > -pl foo builds only foo
>>>>> > >> > > > > > -pl foo+ builds foo and its children, wherever they are
>>>>> > exactly
>>>>> > >> > > > > >
>>>>> > >> > > > > > This would also co-exist with the ! and ? prefixes.
>>>>> > >> > > > > >
>>>>> > >> > > > > > PS: Since if often use shell path completion, -pl foo/+
>>>>> should
>>>>> > >> have
>>>>> > >> > > the
>>>>> > >> > > > > > same effect, ideally.
>>>>> > >> > > > > >
>>>>> > >> > > > > > Cheers,
>>>>> > >> > > > > >
>>>>> > >> > > > > > Falko
>>>>> > >> > > > > >
>>>>> > >> > > > > > Am 21.02.2021 um 21:09 schrieb Romain Manni-Bucau:
>>>>> > >> > > > > > > Le dim. 21 févr. 2021 à 20:39, Martin Kanters
>>>>> > >> > > > > martinkant...@apache.org>
>>>>> > >> > > > > > a
>>>>> > >> > > > > > > écrit :
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> Hm, so I guess that's indeed a valid reason to keep
>>>>> the old
>>>>> > >> > > > > > functionality
>>>>> > >> > > > > > >> working. Thanks for the enlightenment, Romain.
>>>>> > >> > > > > > >> Still I think it makes more sense to make project
>>>>> selection
>>>>> > >> > > > recursive
>>>>> > >> > > > > by
>>>>> > >> > > > > > >> default, but it's not straightforward to come up
>>>>> with a
>>>>> > nice
>>>>> > >> > > > > > combination of
>>>>> > >> > > > > > >> flags.
>>>>> > >> > > > > > >> Let's summarize:
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > >> 1. -pl + -N:
>>>>> > >> > > > > > >> While it does sound like the flag to re-use, I do
>>>>> not like
>>>>> > >> the
>>>>> > >> > > fact
>>>>> > >> > > > > > that -N
>>>>> > >> > > > > > >> works differently than normal when used together
>>>>> with -pl.
>>>>> > >> The
>>>>> > >> > > code
>>>>> > >> > > > > > would
>>>>> > >> > > > > > >> become more complex and the flag hard to explain to
>>>>> users.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > > Does not really solves the issue as soon as you use
>>>>> it for 2
>>>>> > >> > > > different
>>>>> > >> > > > > > kind
>>>>> > >> > > > > > > of modules until it becomes -plN which is 4 IMHO
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> 2. -pl + -plr:
>>>>> > >> > > > > > >> This gives the most flexibility, giving users the
>>>>> option to
>>>>> > >> > select
>>>>> > >> > > > > > >> non-recursive and recursive projects in one command.
>>>>> The
>>>>> > two
>>>>> > >> > flags
>>>>> > >> > > > > have
>>>>> > >> > > > > > a
>>>>> > >> > > > > > >> lot of overlap though, what happens when a project is
>>>>> > >> selected
>>>>> > >> > > with
>>>>> > >> > > > > -pl
>>>>> > >> > > > > > and
>>>>> > >> > > > > > >> deselected with -plr, which gets precedence etc.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > > -plr without -pl, dont use a global toggle probably.
>>>>> > >> > > > > > >
>>>>> > >> > > > > > > Ex: -pl parent-with-plugins -plr myaggregator -pl
>>>>> foo/bar
>>>>> > -plr
>>>>> > >> > > > > > docker-images
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> 3. -pl /*
>>>>> > >> > > > > > >> This gives the same flexibility as 2, but then in one
>>>>> > >> command. I
>>>>> > >> > > do
>>>>> > >> > > > > like
>>>>> > >> > > > > > >> that, but it can get messy with shell expansion. One
>>>>> other
>>>>> > >> thing
>>>>> > >> > > is
>>>>> > >> > > > > that
>>>>> > >> > > > > > >> with -pl you can select projects using the
>>>>> directory, but
>>>>> > >> also
>>>>> > >> > by
>>>>> > >> > > > > > >> (optionally groupid and) artifactId. The star (or its
>>>>> > >> > replacement)
>>>>> > >> > > > > could
>>>>> > >> > > > > > >> mean different things when used in either variant.
>>>>> Mind
>>>>> > that
>>>>> > >> > > > > submodules
>>>>> > >> > > > > > do
>>>>> > >> > > > > > >> not have to be placed directly in a subdirectory.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > > Other issue is maven works with not linear (tree)
>>>>> children
>>>>> > so
>>>>> > >> can
>>>>> > >> > > be
>>>>> > >> > > > > > > complex to handle when parents or children are in
>>>>> other
>>>>> > >> physical
>>>>> > >> > > tree
>>>>> > >> > > > > or
>>>>> > >> > > > > > > even projects.
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> 4. (new idea) -pl + --pl-non-recursive:
>>>>> > >> > > > > > >> This does not have the flexibility 2 and 3 provides
>>>>> and we
>>>>> > >> would
>>>>> > >> > > > have
>>>>> > >> > > > > to
>>>>> > >> > > > > > >> introduce a new CLI flag. But it does have a very
>>>>> clear
>>>>> > goal
>>>>> > >> > which
>>>>> > >> > > > is
>>>>> > >> > > > > > easy
>>>>> > >> > > > > > >> to implement + explain.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > > Hmm another global toggle? It will have the same
>>>>> combination
>>>>> > >> > issue
>>>>> > >> > > > than
>>>>> > >> > > > > > -N
>>>>> > >> > > > > > > IMHO.
>>>>> > >> > > > > > > So overall this sounds like reversing -pl and adding
>>>>> this
>>>>> > >> > > > complementary
>>>>> > >> > > > > > > option so 2 sounds the saner equivalent option for
>>>>> backward
>>>>> > >> > compat.
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> 5. Revert all and restore 3.6.3 functionality.
>>>>> > >> > > > > > >> Users could build extensions or plugin functionality
>>>>> to
>>>>> > >> achieve
>>>>> > >> > > the
>>>>> > >> > > > > > >> recursiveness. Not my favorite, because I think this
>>>>> is
>>>>> > >> > something
>>>>> > >> > > > > Maven
>>>>> > >> > > > > > >> Core should be able to provide out of the box.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > > "Extension" can be built in too, just mentionned we
>>>>> can
>>>>> > solve
>>>>> > >> it
>>>>> > >> > > > > > > differently than enriching again the cli since
>>>>> functionally
>>>>> > we
>>>>> > >> > > > already
>>>>> > >> > > > > > > cover it.
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> 6. Make recursiveness the default and do not provide
>>>>> a
>>>>> > >> > workaround
>>>>> > >> > > > for
>>>>> > >> > > > > > >> non-recursiveness
>>>>> > >> > > > > > >> Since we are going to a new major version it's
>>>>> acceptable
>>>>> > to
>>>>> > >> > > > > > break/change
>>>>> > >> > > > > > >> existing behavior. We could wait until users
>>>>> complain and
>>>>> > >> then
>>>>> > >> > > build
>>>>> > >> > > > > > >> something in.
>>>>> > >> > > > > > >> Not my favorite (anymore) either, since apparently
>>>>> it's a
>>>>> > >> common
>>>>> > >> > > > > > use-case
>>>>> > >> > > > > > >> that we would break.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > > Just my 2cts but sounds the worse.
>>>>> > >> > > > > > > Even if going major backward compat is key for not
>>>>> internals
>>>>> > >> > > > otherwise
>>>>> > >> > > > > we
>>>>> > >> > > > > > > do another build tool and break everyone which is
>>>>> always a
>>>>> > >> moment
>>>>> > >> > > of
>>>>> > >> > > > > > > temptation to reject the tool, in particular when
>>>>> trivial to
>>>>> > >> > avoid
>>>>> > >> > > > from
>>>>> > >> > > > > > > user PoV.
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> I understand the thread might've become hard to
>>>>> follow, so
>>>>> > I
>>>>> > >> > hope
>>>>> > >> > > > this
>>>>> > >> > > > > > >> summary helps other people to join the discussion.
>>>>> > >> > > > > > >> My current favorite is 4.
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > >
>>>>> > >> > > > > > > Personally, I'd say investigate alias option and if
>>>>> not
>>>>> > >> > satistying
>>>>> > >> > > > then
>>>>> > >> > > > > > use
>>>>> > >> > > > > > > 2.
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >
>>>>> > >> > > > > > >> Martin
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > >> Op za 20 feb. 2021 om 17:53 schreef Romain
>>>>> Manni-Bucau
>>>>> > >> > > > > > >> rmannibu...@gmail.com>:
>>>>> > >> > > > > > >>
>>>>> > >> > > > > > >>> I like the regex idea but wildcard (*) does not
>>>>> work well
>>>>> > >> due
>>>>> > >> > to
>>>>> > >> > > > > common
>>>>> > >> > > > > > >>> shell expansion (or it already works but it is
>>>>> outside of
>>>>> > >> maven
>>>>> > >> > > > scope
>>>>> > >> > > > > > to
>>>>> > >> > > > > > >> be
>>>>> > >> > > > > > >>> concrete).
>>>>> > >> > > > > > >>>
>>>>> > >> > > > > > >>> My 2cts would be that, to be honest, I think we all
>>>>> lead
>>>>> > to
>>>>> > >> > have
>>>>> > >> > > > > > aliases
>>>>> > >> > > > > > >> in
>>>>> > >> > > > > > >>> maven for potentially very long commands (there was
>>>>> some
>>>>> > >> > threads
>>>>> > >> > > > > about
>>>>> > >> > > > > > >> it),
>>>>> > >> > > > > > >>> CLI then just needs to enable to activate/deactivate
>>>>> > things,
>>>>> > >> > not
>>>>> > >> > > to
>>>>> > >> > > > > be
>>>>> > >> > > > > > >>> clever and it would enable all combination without
>>>>> any
>>>>> > >> behavior
>>>>> > >> > > > > change
>>>>> > >> > > > > > >> nor
>>>>> > >> > > > > > >>> new option IMHO. Concretely "mvn alias:bd" would
>>>>> run "mvn
>>>>> > >> -pl
>>>>> > >> > > > foo/bar
>>>>> > >> > > > > > -pl
>>>>> > >> > > > > > >>> foo/dummy" for example. Thinking out loud it can be
>>>>> done
>>>>> > >> with a
>>>>> > >> > > > > plugin
>>>>> > >> > > > > > >>> already so can maybe give a try if it sounds like a
>>>>> good
>>>>> > >> idea
>>>>> > >> > for
>>>>> > >> > > > > > others
>>>>> > >> > > > > > >>> too.
>>>>> > >> > > > > > >>>
>>>>> > >> > > > > > >>> Romain Manni-Bucau
>>>>> > >> > > > > > >>> @rmannibucau | Blog
>>>>> > >> > > > > > >>> | Old Blog
>>>>> > >> > > > > > >>> | Github
>>>>> > >> > > > > > >>> https://github.com/rmannibucau> |
>>>>> > >> > > > > > >>> LinkedIn | Book
>>>>> > >> > > > > > >>>
>>>>> > >> > > > > > >>>
>>>>> > >> > > > > > >>
>>>>> > >> > > > > >
>>>>> > >> > > > >
>>>>> > >> > > >
>>>>> > >> > >
>>>>> > >> >
>>>>> > >>
>>>>> >
>>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>> > >> > > > > > >>>
>>>>> > >> > > > > > >>> Le sam. 20 févr. 2021 à 14:40, Falko Modler a
>>>>> > >> > > > > > écrit :
>>>>> > >> > > > > > >>>
>>>>> > >> > > > > > >>>> Thanks for the quick reaction/answers!
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>> TBH, I haven't fully understood why -N cannot be
>>>>> used
>>>>> > >> here. I
>>>>> > >> > do
>>>>> > >> > > > > > >>>> understand that -N reduces the reactor to one
>>>>> project
>>>>> > >> (before
>>>>> > >> > > > > project
>>>>> > >> > > > > > >>>> selection via -pl can kick in).
>>>>> > >> > > > > > >>>> But what if -N wouldn't be applied if -pl is
>>>>> present? It
>>>>> > >> would
>>>>> > >> > > > then
>>>>> > >> > > > > > >>> become
>>>>> > >> > > > > > >>>> a "secondary" option, only applying to the projects
>>>>> > >> selected
>>>>> > >> > or
>>>>> > >> > > > > > >>> deselected
>>>>> > >> > > > > > >>>> via -pl.
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>> However, the most flexible and fully backwards
>>>>> compatiple
>>>>> > >> > > solution
>>>>> > >> > > > > > >> would
>>>>> > >> > > > > > >>>> indeed be something like -plr as suggested before.
>>>>> You
>>>>> > >> could
>>>>> > >> > > then
>>>>> > >> > > > > also
>>>>> > >> > > > > > >>> mix
>>>>> > >> > > > > > >>>> and match -pl and -plr.
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>> Btw, half offtopic: I proposed [1] to add ? to -pl
>>>>> and in
>>>>> > >> that
>>>>> > >> > > > > context
>>>>> > >> > > > > > >> I
>>>>> > >> > > > > > >>>> also thought about wildcard support for -pl, but
>>>>> Robert
>>>>> > >> didn't
>>>>> > >> > > > like
>>>>> > >> > > > > > the
>>>>> > >> > > > > > >>>> idea.
>>>>> > >> > > > > > >>>> I'm just thinking whether -pl foo/* might be
>>>>> something
>>>>> > that
>>>>> > >> > > could
>>>>> > >> > > > > help
>>>>> > >> > > > > > >>>> here as well, but it wouldn't be trivial to do, I
>>>>> > suppose.
>>>>> > >> > > > > > >>>> PS: -help doesn't mention ! at all.
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>> [1] https://issues.apache.org/jira/browse/MNG-6511
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>> Cheers,
>>>>> > >> > > > > > >>>> Falko
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > >
>>>>> > >>
>>>>> ---------------------------------------------------------------------
>>>>> > >> > > > > > >>>> To unsubscribe, e-mail:
>>>>> dev-unsubscr...@maven.apache.org
>>>>> > >> > > > > > >>>> For additional commands, e-mail:
>>>>> > dev-h...@maven.apache.org
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > > >>>>
>>>>> > >> > > > > >
>>>>> > >> > > > > >
>>>>> > >> > > > > >
>>>>> > >> >
>>>>> ---------------------------------------------------------------------
>>>>> > >> > > > > > To unsubscribe, e-mail:
>>>>> dev-unsubscr...@maven.apache.org
>>>>> > >> > > > > > For additional commands, e-mail:
>>>>> dev-h...@maven.apache.org
>>>>> > >> > > > > >
>>>>> > >> > > > > >
>>>>> > >> > > > >
>>>>> > >> > > >
>>>>> > >> > >
>>>>> > >> >
>>>>> > >>
>>>>> > >
>>>>> >
>>>>>
>>>>

Reply via email to