diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java index 3b3ab04f8106..144ca8ff16b6 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java @@ -211,10 +211,10 @@ class BuildContext implements AutoCloseable { session.getProjects().size()); // Propagate the parallel flag to the root session session.setParallel(threads > 1); - this.executor = new PhasingExecutor(Executors.newFixedThreadPool(threads, new BuildThreadFactory())); - // build initial plan + // Build the initial plan before creating the executor so constructor failures cannot leak it. this.plan = buildInitialPlan(taskSegments); + this.executor = new PhasingExecutor(Executors.newFixedThreadPool(threads, new BuildThreadFactory())); } BuildContext() {