From e8f8fdbadc5bea26d0483deb11974ee45f82c29e Mon Sep 17 00:00:00 2001 From: Igor Fedorenko Date: Fri, 21 Jan 2011 00:52:20 +0000 Subject: [PATCH] MNG-4988 API to calculate execution plan without full mojo execution configuration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1061589 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/project/EmptyLifecycleExecutor.java | 9 +- .../lifecycle/DefaultLifecycleExecutor.java | 18 +++- .../maven/lifecycle/DefaultSchedules.java | 2 +- .../maven/lifecycle/LifecycleExecutor.java | 6 ++ ...faultLifecycleExecutionPlanCalculator.java | 85 +++++++++++-------- .../LifecycleExecutionPlanCalculator.java | 11 ++- .../LifecycleTaskSegmentCalculator.java | 5 ++ .../LifecycleExecutionPlanCalculatorStub.java | 18 +++- .../maven/project/EmptyLifecycleExecutor.java | 5 ++ 9 files changed, 117 insertions(+), 42 deletions(-) diff --git a/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java b/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java index c8fdddf938..d5ab60edea 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java +++ b/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java @@ -25,7 +25,9 @@ import java.util.Set; import org.apache.maven.execution.MavenSession; -import org.apache.maven.lifecycle.*; +import org.apache.maven.lifecycle.DefaultLifecycles; +import org.apache.maven.lifecycle.LifecycleExecutor; +import org.apache.maven.lifecycle.MavenExecutionPlan; import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; import org.apache.maven.plugin.MojoExecution; @@ -45,6 +47,11 @@ public MavenExecutionPlan calculateExecutionPlan( MavenSession session, String.. return new MavenExecutionPlan( null, new DefaultLifecycles() ); } + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, boolean setup, String... tasks ) + { + return new MavenExecutionPlan( null, new DefaultLifecycles() ); + } + public void execute( MavenSession session ) { } diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java index 5acaefd56d..a719a0c704 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java @@ -42,6 +42,7 @@ import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; @@ -128,14 +129,14 @@ MojoDescriptor getMojoDescriptor( String task, MavenSession session, MavenProjec // Used by m2eclipse @SuppressWarnings( { "UnusedDeclaration" } ) - public MavenExecutionPlan calculateExecutionPlan( MavenSession session, String... tasks ) + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, boolean setup, String... tasks ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, PluginManagerException, LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException { - - List taskSegments = lifecycleTaskSegmentCalculator.calculateTaskSegments( session ); + List taskSegments = + lifecycleTaskSegmentCalculator.calculateTaskSegments( session, Arrays.asList( tasks ) ); TaskSegment mergedSegment = new TaskSegment( false ); @@ -145,7 +146,16 @@ public MavenExecutionPlan calculateExecutionPlan( MavenSession session, String.. } return lifecycleExecutionPlanCalculator.calculateExecutionPlan( session, session.getCurrentProject(), - mergedSegment.getTasks() ); + mergedSegment.getTasks(), setup ); + } + + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, String... tasks ) + throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, + MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, + PluginManagerException, LifecyclePhaseNotFoundException, LifecycleNotFoundException, + PluginVersionResolutionException + { + return calculateExecutionPlan( session, true, tasks ); } // Site 3.x diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java index e12bd093d9..4c1fe571f5 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java @@ -54,7 +54,7 @@ public List createExecutionPlanItem( MavenProject mavenProjec List result = new ArrayList(); for ( MojoExecution mojoExecution : executions ) { - String lifeCyclePhase = mojoExecution.getMojoDescriptor().getPhase(); + String lifeCyclePhase = mojoExecution.getLifecyclePhase(); final Scheduling scheduling = getScheduling( "default" ); Schedule schedule = null; if ( scheduling != null ) diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java index aca6965448..37b6e499ae 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java @@ -71,6 +71,12 @@ MavenExecutionPlan calculateExecutionPlan( MavenSession session, String... tasks PluginManagerException, LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException; + MavenExecutionPlan calculateExecutionPlan( MavenSession session, boolean setup, String... tasks ) + throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, + MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, + PluginManagerException, LifecyclePhaseNotFoundException, LifecycleNotFoundException, + PluginVersionResolutionException; + void execute( MavenSession session ); // used by the site plugin 3.x diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java index 6038e14b56..b28e6c0132 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java @@ -14,6 +14,16 @@ */ package org.apache.maven.lifecycle.internal; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + import org.apache.maven.execution.MavenSession; import org.apache.maven.lifecycle.DefaultLifecycles; import org.apache.maven.lifecycle.DefaultSchedules; @@ -45,18 +55,6 @@ import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.TreeSet; - /** * @since 3.0 * @author Benjamin Bentmann @@ -104,7 +102,7 @@ public DefaultLifecycleExecutionPlanCalculator( BuildPluginManager pluginManager this.defaultSchedules = defaultSchedules; } - public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks ) + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks, boolean setup ) throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException @@ -113,42 +111,61 @@ public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenPro final List executions = calculateMojoExecutions( session, project, tasks ); - setupMojoExections( session, project, executions ); + if ( setup ) + { + setupMojoExecutions( session, project, executions ); + } final List planItem = defaultSchedules.createExecutionPlanItem( project, executions ); return new MavenExecutionPlan( planItem, defaultLifeCycles ); } - private void setupMojoExections( MavenSession session, MavenProject project, List mojoExecutions ) + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks ) + throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, + PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, + NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException + { + return calculateExecutionPlan( session, project, tasks, true ); + } + + private void setupMojoExecutions( MavenSession session, MavenProject project, List mojoExecutions ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException { for ( MojoExecution mojoExecution : mojoExecutions ) { - MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor(); - - if ( mojoDescriptor == null ) - { - mojoDescriptor = - pluginManager.getMojoDescriptor( mojoExecution.getPlugin(), mojoExecution.getGoal(), - project.getRemotePluginRepositories(), - session.getRepositorySession() ); - - mojoExecution.setMojoDescriptor( mojoDescriptor ); - } - - populateMojoExecutionConfiguration( project, mojoExecution, - MojoExecution.Source.CLI.equals( mojoExecution.getSource() ) ); - - finalizeMojoConfiguration( mojoExecution ); - - calculateForkedExecutions( mojoExecution, session, project, new HashSet() ); + setupMojoExecution( session, project, mojoExecution ); } } - private List calculateMojoExecutions( MavenSession session, MavenProject project, + public void setupMojoExecution( MavenSession session, MavenProject project, MojoExecution mojoExecution ) + throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, + MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, + LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException + { + MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor(); + + if ( mojoDescriptor == null ) + { + mojoDescriptor = + pluginManager.getMojoDescriptor( mojoExecution.getPlugin(), mojoExecution.getGoal(), + project.getRemotePluginRepositories(), + session.getRepositorySession() ); + + mojoExecution.setMojoDescriptor( mojoDescriptor ); + } + + populateMojoExecutionConfiguration( project, mojoExecution, + MojoExecution.Source.CLI.equals( mojoExecution.getSource() ) ); + + finalizeMojoConfiguration( mojoExecution ); + + calculateForkedExecutions( mojoExecution, session, project, new HashSet() ); + } + + public List calculateMojoExecutions( MavenSession session, MavenProject project, List tasks ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java index ea6e9420bb..7d35b10258 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java @@ -48,11 +48,20 @@ MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject pr PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException; + MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks, + boolean setup ) + throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, + PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, + NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException; + void calculateForkedExecutions( MojoExecution mojoExecution, MavenSession session ) throws MojoNotFoundException, PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException; - + void setupMojoExecution( MavenSession session, MavenProject project, MojoExecution mojoExecution ) + throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, + MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, + LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException; } diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java index e41f9c4375..113a5ab3ef 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java @@ -51,6 +51,11 @@ List calculateTaskSegments( MavenSession session ) MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, PluginVersionResolutionException, LifecyclePhaseNotFoundException, LifecycleNotFoundException; + public List calculateTaskSegments( MavenSession session, List tasks ) + throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, + MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, + PluginVersionResolutionException; + boolean requiresProject( MavenSession session ); } diff --git a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java index ffdff9c5d6..06895fda70 100644 --- a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java +++ b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java @@ -111,7 +111,8 @@ public void calculateForkedExecutions( MojoExecution mojoExecution, MavenSession // Maybe do something ? } - public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks ) + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks, + boolean setup ) throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException @@ -131,6 +132,21 @@ public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenPro return createExecutionPlan( project, me ); } + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, MavenProject project, List tasks ) + throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, + PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, + NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException + { + return calculateExecutionPlan( session, project, tasks, true ); + } + + public void setupMojoExecution( MavenSession session, MavenProject project, MojoExecution mojoExecution ) + throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, + MojoNotFoundException, InvalidPluginDescriptorException, NoPluginFoundForPrefixException, + LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException + { + } + public static MavenExecutionPlan getProjectAExceutionPlan() throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, diff --git a/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java b/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java index 2436ff742b..e6b2693c6d 100644 --- a/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java +++ b/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java @@ -46,6 +46,11 @@ public MavenExecutionPlan calculateExecutionPlan( MavenSession session, String.. return new MavenExecutionPlan( null, null ); } + public MavenExecutionPlan calculateExecutionPlan( MavenSession session, boolean setup, String... tasks ) + { + return new MavenExecutionPlan( null, null ); + } + public void execute( MavenSession session ) { }