Author: jvanzyl Date: Thu May 21 14:00:34 2009 New Revision: 777120 URL: http://svn.apache.org/viewvc?rev=777120&view=rev Log: o using mojo executions as the placeholders in the lifecycle instead of string representations
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/plugin/MojoExecution.java maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java maven/components/branches/MNG-2766/maven-model-builder/src/main/resources/org/apache/maven/project/pom-4.0.0.xml 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=777120&r1=777119&r2=777120&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 Thu May 21 14:00:34 2009 @@ -227,7 +227,7 @@ { MavenProject project = session.getCurrentProject(); - List<String> phasesWithMojosToExecute = new ArrayList<String>(); + List<MojoExecution> phasesWithMojosToExecute = new ArrayList<MojoExecution>(); List<MojoExecution> lifecyclePlan = new ArrayList<MojoExecution>(); @@ -238,7 +238,9 @@ { MojoDescriptor mojoDescriptor = getMojoDescriptor( task, session ); - MojoExecution mojoExecution = getMojoExecution( project, mojoDescriptor ); + MojoExecution mojoExecution = new MojoExecution( mojoDescriptor ); + + populateMojoExecutionConfiguration( project, mojoExecution ); lifecyclePlan.add( mojoExecution ); } @@ -265,7 +267,7 @@ // // Create an ordered Map of the phases in the lifecycle to a list of mojos to execute. - Map<String, List<String>> phaseToMojoMapping = new LinkedHashMap<String, List<String>>(); + Map<String, List<MojoExecution>> phaseToMojoMapping = new LinkedHashMap<String, List<MojoExecution>>(); // 4. @@ -273,11 +275,12 @@ for ( String phase : lifecycle.getPhases() ) { - List<String> mojos = new ArrayList<String>(); + List<MojoExecution> mojos = new ArrayList<MojoExecution>(); + //TODO: remove hard coding if ( phase.equals( "clean" ) ) { - mojos.add( "org.apache.maven.plugins:maven-clean-plugin:clean" ); + mojos.add( new MojoExecution( "org.apache.maven.plugins", "maven-clean-plugin", "2.3", "clean", null ) ); } // This is just just laying out the initial structure of the mojos to run in each phase of the @@ -310,10 +313,11 @@ // So for the lifecycle mapping we need a map with the phases as keys so we can easily check // if this phase belongs to the given lifecycle. this shows the system is messed up. this // shouldn't happen. - phaseToMojoMapping.put( execution.getPhase(), new ArrayList<String>() ); + phaseToMojoMapping.put( execution.getPhase(), new ArrayList<MojoExecution>() ); } - phaseToMojoMapping.get( execution.getPhase() ).add( s ); + MojoExecution mojoExecution = new MojoExecution( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion(), goal, execution.getId() ); + phaseToMojoMapping.get( execution.getPhase() ).add( mojoExecution ); } } // if not then i need to grab the mojo descriptor and look at the phase that is specified @@ -326,7 +330,8 @@ if ( mojoDescriptor.getPhase() != null && phaseToMojoMapping.get( mojoDescriptor.getPhase() ) != null ) { - phaseToMojoMapping.get( mojoDescriptor.getPhase() ).add( s ); + MojoExecution mojoExecution = new MojoExecution( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion(), goal, execution.getId() ); + phaseToMojoMapping.get( mojoDescriptor.getPhase() ).add( mojoExecution ); } } } @@ -338,7 +343,6 @@ // We are only interested in the phases that correspond to the lifecycle we are trying to run. If we are running the "clean" // lifecycle we are not interested in goals -- like "generate-sources -- that belong to the default lifecycle. // - for ( String phase : phaseToMojoMapping.keySet() ) { phasesWithMojosToExecute.addAll( phaseToMojoMapping.get( phase ) ); @@ -354,17 +358,19 @@ // 7. Now we create the correct configuration for the mojo to execute. //TODO: this needs to go to the model builder. - - for ( String mojo : phasesWithMojosToExecute ) + //TODO: just used a hollowed out MojoExecution + for ( MojoExecution mojoExecution : phasesWithMojosToExecute ) { // These are bits that look like this: // // org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process - // - - MojoDescriptor mojoDescriptor = getMojoDescriptor( mojo, session ); + // + MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor( + mojoExecution.getGroupId(), mojoExecution.getArtifactId(), mojoExecution.getVersion(), mojoExecution.getGoal(), session.getLocalRepository(), project.getRemoteArtifactRepositories() ); - MojoExecution mojoExecution = getMojoExecution( project, mojoDescriptor ); + mojoExecution.setMojoDescriptor( mojoDescriptor ); + + populateMojoExecutionConfiguration( project, mojoExecution ); lifecyclePlan.add( mojoExecution ); } @@ -380,13 +386,13 @@ return sb.toString(); } - private MojoExecution getMojoExecution( MavenProject project, MojoDescriptor mojoDescriptor ) - { - MojoExecution mojoExecution = new MojoExecution( mojoDescriptor ); - - String g = mojoDescriptor.getPluginDescriptor().getGroupId(); + //this will get the wrong configuration because it's only matching the goal not the execution id + + private void populateMojoExecutionConfiguration( MavenProject project, MojoExecution mojoExecution ) + { + String g = mojoExecution.getGroupId(); - String a = mojoDescriptor.getPluginDescriptor().getArtifactId(); + String a = mojoExecution.getArtifactId(); Plugin p = project.getPlugin( g + ":" + a ); @@ -394,18 +400,16 @@ { for ( String goal : e.getGoals() ) { - if ( mojoDescriptor.getGoal().equals( goal ) ) + if ( mojoExecution.getGoal().equals( goal ) ) { Xpp3Dom executionConfiguration = (Xpp3Dom) e.getConfiguration(); - Xpp3Dom mojoConfiguration = extractMojoConfiguration( executionConfiguration, mojoDescriptor ); + Xpp3Dom mojoConfiguration = extractMojoConfiguration( executionConfiguration, mojoExecution.getMojoDescriptor() ); mojoExecution.setConfiguration( mojoConfiguration ); } } } - - return mojoExecution; } Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MojoExecution.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MojoExecution.java?rev=777120&r1=777119&r2=777120&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MojoExecution.java (original) +++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MojoExecution.java Thu May 21 14:00:34 2009 @@ -22,26 +22,37 @@ import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.codehaus.plexus.util.xml.Xpp3Dom; -/** - * Describes a single mojo invocation. - * - * @author <a href="mailto:br...@apache.org">Brett Porter</a> - * @version $Id$ - */ public class MojoExecution { - private final String executionId; - - private final MojoDescriptor mojoDescriptor; + private String groupId; + + private String artifactId; + + private String version; + + private String goal; + + private String executionId; + + private MojoDescriptor mojoDescriptor; private Xpp3Dom configuration; - + /** * The phase may or may not have been bound to a phase but once the plan has been calculated we know what phase * this mojo execution is going to run in. */ private String lifecyclePhase; + public MojoExecution( String groupId, String artifactId, String version, String goal, String executionId ) + { + this.groupId = groupId; + this.artifactId = artifactId; + this.version = version; + this.goal = goal; + this.executionId = executionId; + } + public MojoExecution( MojoDescriptor mojoDescriptor ) { this.mojoDescriptor = mojoDescriptor; @@ -115,4 +126,48 @@ return buffer.toString(); } + public String getGroupId() + { + if ( mojoDescriptor != null ) + { + return mojoDescriptor.getPluginDescriptor().getGroupId(); + } + + return groupId; + } + + public String getArtifactId() + { + if ( mojoDescriptor != null ) + { + return mojoDescriptor.getPluginDescriptor().getArtifactId(); + } + + return artifactId; + } + + public String getVersion() + { + if ( mojoDescriptor != null ) + { + return mojoDescriptor.getPluginDescriptor().getVersion(); + } + + return version; + } + + public String getGoal() + { + if ( mojoDescriptor != null ) + { + return mojoDescriptor.getGoal(); + } + + return goal; + } + + public void setMojoDescriptor( MojoDescriptor mojoDescriptor ) + { + this.mojoDescriptor = mojoDescriptor; + } } 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=777120&r1=777119&r2=777120&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 Thu May 21 14:00:34 2009 @@ -87,7 +87,7 @@ assertNotNull( mojoExecution ); assertEquals( "org.apache.maven.plugins", mojoExecution.getMojoDescriptor().getPluginDescriptor().getGroupId() ); assertEquals( "maven-clean-plugin", mojoExecution.getMojoDescriptor().getPluginDescriptor().getArtifactId() ); - assertEquals( "2.2", mojoExecution.getMojoDescriptor().getPluginDescriptor().getVersion() ); + assertEquals( "2.3", mojoExecution.getMojoDescriptor().getPluginDescriptor().getVersion() ); } // We need to take in multiple lifecycles Modified: maven/components/branches/MNG-2766/maven-model-builder/src/main/resources/org/apache/maven/project/pom-4.0.0.xml URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/resources/org/apache/maven/project/pom-4.0.0.xml?rev=777120&r1=777119&r2=777120&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-model-builder/src/main/resources/org/apache/maven/project/pom-4.0.0.xml (original) +++ maven/components/branches/MNG-2766/maven-model-builder/src/main/resources/org/apache/maven/project/pom-4.0.0.xml Thu May 21 14:00:34 2009 @@ -117,7 +117,7 @@ </plugin> <plugin> <artifactId>maven-plugin-plugin</artifactId> - <version>2.4.2</version> + <version>2.5</version> </plugin> <plugin> <artifactId>maven-rar-plugin</artifactId>