[ 
https://issues.apache.org/jira/browse/MNG-8052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Guillaume Nodet updated MNG-8052:
---------------------------------
    Description: 
The lifecycle is now defined as a tree of phases, each phase being split with a 
{{before:}} phase and a {{after:}} phase. Each phase is given a list of timing 
constraints: a phase from the same lifecycle (compile must be executed after 
sources), a phase in project dependencies ({{compile}} must execute after 
{{compile-only}} project dependencies have reached the {{ready}} phase).
The default lifecycle is defined in the {{DefaultLifecycleRegistry}}.

In addition to the {{before:}} and {{after:}} prefixes, an ordering can be 
defined by appending an integer inside brackets, for example, 
{{after:integration-test[1000]}}.

Note that there are a few changes with the Maven 3 default lifecycle: it's a 
graph, so {{sources}} does not always execute after {{resources}}, nor 
{{compile}} after {{resources}}. Also, unit tests and integration tests have 
been moved to the {{verify}} phase which is run last inside the {{build}} 
phase, but not in the {{package}} phase. The goal is to have a phase (here, 
{{package}} which can run all the reactor with no tests). In order to be 
compatible, old phases are mapped to new ones using aliases. The {{install}} 
and {{deploy}} phases now depends on {{package}}, but not {{verify}} (and 
{{deploy}} does not require {{install}}). This currently only has an effect 
when calling {{mvn deploy}} with the concurrent builder (see MNG-8225).

It's missing the ability to create some scheduling constraints in the POM and 
to define custom phases. All executions in a given phase such as compile or 
after:sources are executed sequentially, but it would be nice to be able to 
execute them in different subphases, so that they could be executed 
concurrently.

  was:
The lifecycle is now defined as a tree of phases, each phase being split with a 
{{before:}} phase and a {{after:}} phase. Each phase is given a list of timing 
constraints: a phase from the same lifecycle (compile must be executed after 
sources), a phase in project dependencies (compile must execute after 
compile-only project dependencies have reached the ready phase), or a set of 
children project dependencies (to re-define aggregators, not yet implemented).
The default lifecycle is defined in the DefaultLifecycleRegistry

In addition to the before: and after: prefixes, an ordering can be defined by 
appending an integer inside brackets, for example, after:integration-test[1000].

Note that there are a few changes with the Maven 3 default lifecycle: it's a 
graph, so sources does not always execute after resources, nor compile after 
resources. Also, unit tests and integration tests have been moved to the verify 
phase which is run last inside the build phase, but not in the package phase. 
The goal is to have a phase (here, package which can run all the reactor with 
no tests). In order to be compatible, old phases are mapped to new ones using 
aliases. The install and deploy phases now depends on package, but not verify 
(and deploy does not require install). This currently has no effect when 
calling mvn deploy, as the ordered list of phases is still used to compute the 
build plan (see #1429).

It's missing the ability to create some scheduling constraints in the POM and 
to define custom phases. All executions in a given phase such as compile or 
after:sources are executed sequentially, but it would be nice to be able to 
execute them in different subphases, so that they could be executed 
concurrently.


> Define a new lifecycle for Maven 4
> ----------------------------------
>
>                 Key: MNG-8052
>                 URL: https://issues.apache.org/jira/browse/MNG-8052
>             Project: Maven
>          Issue Type: New Feature
>            Reporter: Guillaume Nodet
>            Assignee: Guillaume Nodet
>            Priority: Major
>             Fix For: 4.0.0-beta-4
>
>
> The lifecycle is now defined as a tree of phases, each phase being split with 
> a {{before:}} phase and a {{after:}} phase. Each phase is given a list of 
> timing constraints: a phase from the same lifecycle (compile must be executed 
> after sources), a phase in project dependencies ({{compile}} must execute 
> after {{compile-only}} project dependencies have reached the {{ready}} phase).
> The default lifecycle is defined in the {{DefaultLifecycleRegistry}}.
> In addition to the {{before:}} and {{after:}} prefixes, an ordering can be 
> defined by appending an integer inside brackets, for example, 
> {{after:integration-test[1000]}}.
> Note that there are a few changes with the Maven 3 default lifecycle: it's a 
> graph, so {{sources}} does not always execute after {{resources}}, nor 
> {{compile}} after {{resources}}. Also, unit tests and integration tests have 
> been moved to the {{verify}} phase which is run last inside the {{build}} 
> phase, but not in the {{package}} phase. The goal is to have a phase (here, 
> {{package}} which can run all the reactor with no tests). In order to be 
> compatible, old phases are mapped to new ones using aliases. The {{install}} 
> and {{deploy}} phases now depends on {{package}}, but not {{verify}} (and 
> {{deploy}} does not require {{install}}). This currently only has an effect 
> when calling {{mvn deploy}} with the concurrent builder (see MNG-8225).
> It's missing the ability to create some scheduling constraints in the POM and 
> to define custom phases. All executions in a given phase such as compile or 
> after:sources are executed sequentially, but it would be nice to be able to 
> execute them in different subphases, so that they could be executed 
> concurrently.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to