Author: jvanzyl
Date: Tue Mar 24 17:45:00 2009
New Revision: 757922

URL: http://svn.apache.org/viewvc?rev=757922&view=rev
Log:
o i can now in a simple way get the lifecycle plan for a particular task
o the tests need to be simplified, possibly use the jxpath technique to make 
the test more concise
o the API still needs some work, and we still need to be able to adapt the 
lifecycle in context -- my particular use case is running inside eclipse and 
essentially disabling all but what is required to run inside eclipse. we don't 
need to compile, test or package for example 

Modified:
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=757922&r1=757921&r2=757922&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Tue Mar 24 17:45:00 2009
@@ -187,15 +187,54 @@
         // if NEVER, don't blacklist
         return false;
     }
+    
+    private void executeGoal( String task, MavenSession session, MavenProject 
project )
+        throws LifecycleExecutionException, BuildFailureException
+    {
+        List<MojoDescriptor> lifecyclePlan = calculateLifecyclePlan( task, 
session );        
+        
+        for( MojoDescriptor md : lifecyclePlan )
+        {
+            System.out.println( md.getFullGoalName() );
+        }        
+        
+        /*
+        for ( MojoExecution mojoExecution : goals )
+         {
+             MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
+
+             try
+             {
+                 pluginManager.executeMojo( project, mojoExecution, session );
+             }
+             catch ( PluginManagerException e )
+             {
+                 throw new LifecycleExecutionException( "Internal error in the 
plugin manager executing goal '" + mojoDescriptor.getId() + "': " + 
e.getMessage(), e );
+             }
+             catch ( MojoFailureException e )
+             {
+                 throw new BuildFailureException( e.getMessage(), e );
+             }
+             catch ( PluginConfigurationException e )
+             {
+                 throw new LifecycleExecutionException( e.getMessage(), e );
+             }
+         }         
+          */
+
+    }
 
     // 1. Find the lifecycle given the phase (default lifecycle when given 
install)
     // 2. Find the lifecycle mapping that corresponds to the project packaging 
(jar lifecycle mapping given the jar packaging)
     // 3. Find the mojos associated with the lifecycle given the project 
packaging (jar lifecycle mapping for the default lifecycle)
     // 4. Bind those mojos found in the lifecycle mapping for the packaging to 
the lifecycle
     // 5. Bind mojos specified in the project itself to the lifecycle
-    private void executeGoal( String task, MavenSession session, MavenProject 
project )
-        throws LifecycleExecutionException, BuildFailureException
+    public List<MojoDescriptor> calculateLifecyclePlan( String task, 
MavenSession session )
+        throws LifecycleExecutionException
     {
+        // Extract the project from the session
+        MavenProject project = session.getCurrentProject();
+        
         // 1. 
         Lifecycle lifecycle = phaseToLifecycleMap.get( task );
         
@@ -262,39 +301,23 @@
                 }
             }
         }
-                       
+               
+        List<MojoDescriptor> lifecyclePlan = new ArrayList<MojoDescriptor>(); 
+        
         // We need to turn this into a set of MojoExecutions
         for( List<String> mojos : phaseToMojoMapping.values() )
         {
             for( String mojo : mojos )
             {
-                System.out.println( ">> " + mojo );
+                // These are bits that look like this:
+                //
+                // 
org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process
+                //
+                lifecyclePlan.add( getMojoDescriptor( mojo, session, project ) 
);
             }
-        }       
+        }  
         
-        /*
-       for ( MojoExecution mojoExecution : goals )
-        {
-            MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
-
-            try
-            {
-                pluginManager.executeMojo( project, mojoExecution, session );
-            }
-            catch ( PluginManagerException e )
-            {
-                throw new LifecycleExecutionException( "Internal error in the 
plugin manager executing goal '" + mojoDescriptor.getId() + "': " + 
e.getMessage(), e );
-            }
-            catch ( MojoFailureException e )
-            {
-                throw new BuildFailureException( e.getMessage(), e );
-            }
-            catch ( PluginConfigurationException e )
-            {
-                throw new LifecycleExecutionException( e.getMessage(), e );
-            }
-        }         
-         */
+        return lifecyclePlan;
     }
 
     //TODO: which form is most useful. passing in string to parse is not 
really good.
@@ -392,6 +415,7 @@
         project.addPlugin( plugin );
 
         MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal );
+        
         return mojoDescriptor;
     }
 

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=757922&r1=757921&r2=757922&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
 Tue Mar 24 17:45:00 2009
@@ -25,6 +25,7 @@
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.execution.ReactorManager;
 import org.apache.maven.monitor.event.EventDispatcher;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.project.MavenProject;
 
 /**
@@ -34,6 +35,9 @@
 {    
     List<String> getLifecyclePhases();
         
+    List<MojoDescriptor> calculateLifecyclePlan( String task, MavenSession 
session )
+        throws LifecycleExecutionException;
+        
     void execute( MavenSession session )
         throws LifecycleExecutionException, BuildFailureException;
 }

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=757922&r1=757921&r2=757922&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Tue Mar 24 17:45:00 2009
@@ -172,9 +172,6 @@
                         
             project.addPlugin( plugin );
            
-            System.out.println( "AAA loading plugin " + 
pluginDescriptor.getArtifactId() + ":" + pluginDescriptor.getVersion() );       
 
-            System.out.println( "BBB realm: " + 
pluginDescriptor.getClassRealm() );
-            
             return pluginDescriptor;
         }
         catch ( ArtifactResolutionException e )

Modified: 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java?rev=757922&r1=757921&r2=757922&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
 Tue Mar 24 17:45:00 2009
@@ -1,7 +1,6 @@
 package org.apache.maven.lifecycle;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Properties;
@@ -73,7 +72,38 @@
     
     public void testLifecycleQueryingUsingADefaultLifecyclePhase()
         throws Exception
-    {        
+    {   
+        // This stuff all needs to be reduced, reduced, reduced
+        String base = 
"projects/lifecycle-executor/project-with-additional-lifecycle-elements";
+        File sourceDirectory = new File( getBasedir(), "src/test/" + base );
+        File targetDirectory = new File( getBasedir(), "target/" + base );
+        FileUtils.copyDirectoryStructure( sourceDirectory, targetDirectory );
+        File targetPom = new File( targetDirectory, "pom.xml" );
+        MavenSession session = createMavenSession( targetPom );
+        assertEquals( "project-with-additional-lifecycle-elements", 
session.getCurrentProject().getArtifactId() );
+        assertEquals( "1.0-SNAPSHOT", session.getCurrentProject().getVersion() 
);
+        // So this is wrong if we already have the session, which contains a 
request, which in turn contains
+        // the goals we are trying to run
+        
+        List<MojoDescriptor> lifecyclePlan = 
lifecycleExecutor.calculateLifecyclePlan( "package", session );
+        
+        // resources:resources
+        // compiler:compile
+        // plexus-component-metadata:generate-metadata
+        // resources:testResources
+        // compiler:testCompile
+        // plexus-component-metadata:generate-test-metadata
+        // surefire:test
+        // jar:jar
+        
+        assertEquals( "resources:resources", lifecyclePlan.get( 0 
).getFullGoalName() );
+        assertEquals( "compiler:compile", lifecyclePlan.get( 1 
).getFullGoalName() );
+        assertEquals( "plexus-component-metadata:generate-metadata", 
lifecyclePlan.get( 2 ).getFullGoalName() );
+        assertEquals( "resources:testResources", lifecyclePlan.get( 3 
).getFullGoalName() );
+        assertEquals( "compiler:testCompile", lifecyclePlan.get( 4 
).getFullGoalName() );
+        assertEquals( "plexus-component-metadata:generate-test-metadata", 
lifecyclePlan.get( 5 ).getFullGoalName() );
+        assertEquals( "surefire:test", lifecyclePlan.get( 6 
).getFullGoalName() );
+        assertEquals( "jar:jar", lifecyclePlan.get( 7 ).getFullGoalName() );   
     
     }    
     
     public void testLifecycleExecutionUsingADefaultLifecyclePhase()


Reply via email to