[ 
http://jira.codehaus.org/browse/MECLIPSE-414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=156178#action_156178
 ] 

Benjamin Bentmann commented on MECLIPSE-414:
--------------------------------------------

bq. Isn't that only if the CLI plugin isn't part of the normal lifecycle? 
I don't fully get the meaning of those words. A plugin goal is either executed 
directly from the CLI, i.e. via "mvn <prefix>:<goal>", or indirectly from some 
lifecycle, i.e. via "mvn <phase>" in combination with an {{<execution>}} from 
the POM. That is to say, direct invocations from CLI are considered standalone 
goal executions and are never part of any lifecycle.

bq. In this case m-eclipse-p is bound to the @phase generate-resources
What case exactly do you refer to? In the plugin's source code, i.e. 
{{EclipsePlugin.java}}, I merely see [EMAIL PROTECTED] 
phase="generate-resources"}} which has an entirely different semantic than the 
similar looking [EMAIL PROTECTED] generate-resources}}. The first annotation 
requests a forked execution, while the second annotations defines a default 
phase if the goal is specified in an {{<execution>}} for which the user omitted 
the {{<phase>}} element.

I mean for the case of executing "mvn eclipse:eclipse", the eclipse goal is not 
bound to any lifecycle phase. No lifecycle phase, no other plugins unless the 
goal explicitly requests a forked lifecylce/goal execution. That is why the 
{{project}} variable does not see sources/resources that get dynamically 
created/registered by other goals during the lifecycle.

Maybe that simplified flow can shed some light on this:
# "mvn eclipse:eclipse" is invoked by user
# {{MavenProject}} instance is build from POM, call this instance A
# lifecycle phase "generate-resources" is forked as per the eclipse goal's 
[EMAIL PROTECTED] annotation
## {{MavenProject}} instance is build by cloning instance A, call this instance 
B
## the lifecycle bound plugins are called, where their parameter expression 
{{${project\}}} resolves to instance B, i.e. the plugins update instance B with 
generated sources/resources
# Finally, the eclipse goal itself is executed, where {{${project}}} is 
resolved with instance A and {{${executionProject}}} is resolved with instance B

If you like, have a look at {{DefaultLifecycleExecutor}} from the module 
maven-core, that's where most of this process is handled.

> Not beeing @aggregator, eclipse plugin does not require executedProject
> -----------------------------------------------------------------------
>
>                 Key: MECLIPSE-414
>                 URL: http://jira.codehaus.org/browse/MECLIPSE-414
>             Project: Maven 2.x Eclipse Plugin
>          Issue Type: Bug
>    Affects Versions: 2.5
>            Reporter: nicolas de loof
>            Assignee: Barrie Treloar
>             Fix For: 2.6
>
>
> The eclispe plugin uses both ${executedProject} and ${project}. 
> Not beeing an aggregator plugin, ${project} is allways tghe currently 
> executed project, and the projectDirectory is project.getBasedir().
> Having two attributes for same target makes the plugin harder to understand

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to