RunedUniverse / r4m-maven-extension

Runes4Maven (r4m) Maven Extension provides an alternative way for defining maven executions
Apache License 2.0
4 stars 1 forks source link

Feature: In Phase Goal sorting #15

Open VenaNocta opened 4 months ago

VenaNocta commented 4 months ago

Enable in Phase Goal sorting

Current Behavior

Currently the order of goals in a phase is defined by the order in which they are defined. in the case of default maven it is the order in which the goals are defined in the pom.xml. This behavior has been carried over to r4m where it additionally matters in which order the executions are defined in the effective pem.xml, after merging with inherited pem's.

Well this issue should theoretically not exist since it should never matter in which order goals are executed inside the same phase, ... but such little frameworks like "Spring" do not seem to care (Spring by default launches up to 3 goals inside the package phase which have to be executed in a strict sequence). Which in turn leads to a lot of complains and need for extra customization.

Additionally maven internally provides a way for sorting goals, which is not utilized and marked so that it can change at any time!

Suggested Behavior

Provide a way to define goals which, when defined, have to be executed before/after a goal. Currently I'm not sure if it would be a good to idea to include that inside the current pem.xml.

Maybe provide extra support artifacts which add predefined standard pem (& where ever the order is saved) implementations which can be easily added as maven plugins.

VenaNocta commented 6 days ago

Progress Update

During evaluation of possible solutions it was decided that a new configuration will be added.

The configuration is called goal-requirement-model and defined in the grm.xml file. In the goal-requirement-model the user can define which goals have to be executed before/after the goal in question. Additionally condition fields are included so that the definition can be dynamically activated per used packaging-procedure, lifecycle, phase, profile, ...

Other Patches

The development branch also includes minor optimizations and bug fixes that were uncovered during development.

The configuration source workflow was added to both the project-execution-model and the goal-requirement-model, enabling companies/projects to deploy an universal configuration maven-plugin containing the pem.xml and grm.xml defining a unified workflow and automation pipeline.

Furthermore RunedUniverse will use the workflow feature to provide r4m integrations for common project environments. We already have a few projects in mind...