>> 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]

Reply via email to