diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java index 6c089863cc61..646a7515b60f 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java @@ -59,6 +59,8 @@ import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.SessionData; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** *
@@ -75,10 +77,14 @@ @Singleton public class MojoExecutor { + private static final Logger LOGGER = LoggerFactory.getLogger( MojoExecutor.class ); private final BuildPluginManager pluginManager; + private final MavenPluginManager mavenPluginManager; + private final LifecycleDependencyResolver lifeCycleDependencyResolver; + private final ExecutionEventCatapult eventCatapult; private final ReadWriteLock aggregatorLock = new ReentrantReadWriteLock(); @@ -225,6 +231,16 @@ private void execute( MavenSession session, MojoExecution mojoExecution, Project try ( ProjectLock lock = new ProjectLock( session, mojoDescriptor, aggregatorLock ) ) { + if ( session.isParallel() && mojoDescriptor.isAggregator() ) + { + LOGGER.warn( "===" ); + LOGGER.warn( "Executing aggregator Mojo in parallel build:" ); + LOGGER.warn( "Aggregator Mojo requires exclusive access to reactor, " ); + LOGGER.warn( "to prevent race conditions, an aggregating execution will block" ); + LOGGER.warn( "all other executions until finished." ); + LOGGER.warn( "===" ); + } + doExecute( session, mojoExecution, projectIndex, dependencyContext ); } }