Nooo! I don't need extra phases, nor do I have any desire to create
custom lifecycles, even though I know this is possible. My point was: If
we cannot rely on a specific order when executing plugins and executions
within them in the same phase, the logical consequence for deterministic
behaviour would be one phase per plugin or execution. That would be
overkill to the 5th power. My question was how to achieve reliably
predictable ordering. That question is yet to be answered.

I am afraid, just like with the last question I asked here (about the
dependency-reduced POM ), in the end I am not going to get a conclusive
answer and the thread will just trickle out. Or with my PR for Maven
Shade Plugin which did not get a single reaction, even though it fixes
an old problem, adding new functionality. But maybe I just need to be
more patient. :-)

To everyone who already replied to me, thank you so much for helping me
understand some things better.
-- 
Alexander Kriegisch
https://scrum-master.de


Lasse Lindqvist schrieb am 08.05.2021 18:35 (GMT +07:00):

> Hi. In case you really need custom phases, it is possible to add them. See
> https://github.com/raydac/mvn-finisher for an example for adding new
> phases. But I would say this is the last resort in case no other solutions
> work for you.
> 
> la 8. toukok. 2021 klo 10.40 Alexander Kriegisch ([email protected])
> kirjoitti:
> 
>> >> Can anybody enlighten me on what is happening here and if this
>> >> behaviour is documented anywhere? Or is this just the "read the
>> >> freakin' source code, pal" kind of detail?
>>
>> > order in the same phase is not expected to be guaranteed: that's a
>> > design choice (even if "choice" is not the best term IMHO: see below).
>> > Then there can't be any formal documentation: it's just what it is on
>> > each Maven release (and maybe has changed over time). see
>> > https://issues.apache.org/jira/browse/MNG-5987
>>
>> IMO, that is a very unfortunate "design choice", complex situation or or
>> not. Because if you want to order plugins, in theory you would need a
>> separate phase for each. But phases in a lifecycle are limited.
>>
>> > - impact of profile injection, and if you want to control order, key
>> > question: in your case, do you prefer injecting profile-defined
>> > plugins before or after?
>>
>> It is not so much about what I prefer. It is about it being
>> deterministic with clear, documented, release-stable rules. I could
>> adjust my POM to whatever those hypothetical rules would say.
>>
>> > - mix of plugins/goals and executions: in fact, we talk about plugins
>> > order, but what you need is goal execution order. And de-facto, given
>> > multiple goals executions are associated to one unique plugin
>> > definition during model building
>>
>> Actually, I want both, to determine the order of executions within the
>> same phase within the same plugin as well as the execution order of
>> sifferent plugins in the same phase. But my described use case here was
>> the latter, i.e. the problem really is about two different plugins.
>>
>> To make a long story short: My use case is a valid one, and many users
>> face the same situation. What does the Maven team recommend? How is this
>> to be handled in a canonical way? Just saying "you cannot rely on it"
>> does not solve the problem.
>>
>>
>>
>> > Le vendredi 7 mai 2021, 01:13:53 CEST Alexander Kriegisch a écrit :
>> >> I notices an unexpected thing about plugin execution order: If I have
>> >> several plugins running in the same phase, normally they are executed in
>> >> the lexical order in which they appear in the POM. But there is a case
>> >> in which this can change. Schematically, it looks like this:
>> >>
>> >> <profiles>
>> >>   <profile P>
>> >>     <build>
>> >>       <plugins>
>> >>         <plugin A, phase X />
>> >>       </plugins>
>> >>     </build>
>> >>   </profile P>
>> >> </profiles>
>> >>
>> >> <build>
>> >>   <plugins>
>> >>     <plugin B, phase X />
>> >>   </plugins>
>> >> </build>
>> >>
>> >> My expectation was that the execution order in phase X would be plugin
>> >> A, then B. This is true sometimes, depending on which build other
>> >> profiles are active. I mean completely unrelated profiles defined in
>> >> other Maven modules. In my specific case, without specifying any other
>> >> profiles (P is auto-activated bases on non-existence of a file), the
>> >> order was B, A. If I manually activated any other profile or
>> >> de-activated a profile which otherwise would be active automatically,
>> >> the order changed to A, B.
>> >>
>> >> In my case, I had the option of moving plugin B to a later phase, which
>> >> settled the issue for me, but that is not always possible.
>> >>
>> >> Can anybody enlighten me on what is happening here and if this behaviour
>> >> is documented anywhere? Or is this just the "read the freakin' source
>> >> code, pal" kind of detail?
>> >
>> >
>> >
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [email protected]
>> > For additional commands, e-mail: [email protected]
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to