[MNG-6170] NPE in cases using Multithreaded -T X versions:set -DnewVersion=1.0-SNAPSHOT o In some cases the code will return a null which should not be scheduled.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/16f69fcb Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/16f69fcb Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/16f69fcb Branch: refs/heads/MNG-6170 Commit: 16f69fcb9e408fdc42bc038911bcd37ccae8fc38 Parents: 529e8a6 Author: Karl Heinz Marbaise <khmarba...@apache.org> Authored: Sun Feb 12 12:59:25 2017 +0100 Committer: Karl Heinz Marbaise <khmarba...@apache.org> Committed: Wed Mar 1 20:15:22 2017 +0100 ---------------------------------------------------------------------- .../multithreaded/MultiThreadedBuilder.java | 29 +++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/16f69fcb/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java index f0fa2ac..880410e 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java @@ -51,8 +51,7 @@ import org.codehaus.plexus.logging.Logger; * will always result in a sequential build, regardless of the thread count. * * @since 3.0 - * @author Kristian Rosenvold - * Builds one or more lifecycles for a full module + * @author Kristian Rosenvold Builds one or more lifecycles for a full module * <p/> * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. */ @@ -67,7 +66,6 @@ public class MultiThreadedBuilder @Requirement private LifecycleModuleBuilder lifecycleModuleBuilder; - public MultiThreadedBuilder() { } @@ -142,15 +140,20 @@ public class MultiThreadedBuilder { break; } - final List<MavenProject> newItemsThatCanBeBuilt = - analyzer.markAsFinished( projectBuild.getProject() ); - for ( MavenProject mavenProject : newItemsThatCanBeBuilt ) + + // MNG-6170: Only schedule other modules from reactor if we have more modules to build than one. + if ( analyzer.getNumberOfBuilds() > 1 ) { - ProjectSegment scheduledDependent = projectBuildList.get( mavenProject ); - logger.debug( "Scheduling: " + scheduledDependent ); - Callable<ProjectSegment> cb = - createBuildCallable( rootSession, scheduledDependent, reactorContext, taskSegment, muxer ); - service.submit( cb ); + final List<MavenProject> newItemsThatCanBeBuilt = + analyzer.markAsFinished( projectBuild.getProject() ); + for ( MavenProject mavenProject : newItemsThatCanBeBuilt ) + { + ProjectSegment scheduledDependent = projectBuildList.get( mavenProject ); + logger.debug( "Scheduling: " + scheduledDependent ); + Callable<ProjectSegment> cb = + createBuildCallable( rootSession, scheduledDependent, reactorContext, taskSegment, muxer ); + service.submit( cb ); + } } } catch ( InterruptedException e ) @@ -160,13 +163,13 @@ public class MultiThreadedBuilder } catch ( ExecutionException e ) { - // TODO MNG-5766 changes likely made this redundant + // TODO MNG-5766 changes likely made this redundant rootSession.getResult().addException( e ); break; } } - // cancel outstanding builds (if any) - this can happen if an exception is thrown in above block + // cancel outstanding builds (if any) - this can happen if an exception is thrown in above block Future<ProjectSegment> unprocessed; while ( ( unprocessed = service.poll() ) != null )