You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2019/12/07 12:12:38 UTC

[maven] 02/03: Safe State.

This is an automated email from the ASF dual-hosted git repository.

khmarbaise pushed a commit to branch MODELTESTS_IMPROVEMENT
in repository https://gitbox.apache.org/repos/asf/maven.git

commit da2902a994fc267cff3163949b82b48a993c0930
Author: Karl Heinz Marbaise <kh...@apache.org>
AuthorDate: Fri Nov 29 18:51:50 2019 +0100

    Safe State.
---
 .../maven/project/DefaultProjectBuilder.java       | 339 ++++++++++-----------
 .../maven/cli/event/ExecutionEventLogger.java      | 100 +++---
 2 files changed, 202 insertions(+), 237 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index 7e18f1e..d764f8a 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -19,20 +19,6 @@ package org.apache.maven.project;
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.InvalidArtifactRTException;
@@ -76,12 +62,27 @@ import org.eclipse.aether.repository.WorkspaceRepository;
 import org.eclipse.aether.resolution.ArtifactRequest;
 import org.eclipse.aether.resolution.ArtifactResult;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
 /**
  * DefaultProjectBuilder
  */
 @Component( role = ProjectBuilder.class )
 public class DefaultProjectBuilder
-    implements ProjectBuilder
+        implements ProjectBuilder
 {
 
     public static final String DISABLE_GLOBAL_MODEL_CACHE_SYSTEM_PROPERTY =
@@ -118,8 +119,8 @@ public class DefaultProjectBuilder
     // ----------------------------------------------------------------------
 
     @Override
-    public ProjectBuildingResult build( File pomFile, ProjectBuildingRequest request )
-        throws ProjectBuildingException
+    public ProjectBuildingResult build(File pomFile, ProjectBuildingRequest request)
+            throws ProjectBuildingException
     {
         return build( pomFile, new FileModelSource( pomFile ),
                 new InternalConfig( request, null, useGlobalModelCache() ? getModelCache() : null ) );
@@ -131,15 +132,15 @@ public class DefaultProjectBuilder
     }
 
     @Override
-    public ProjectBuildingResult build( ModelSource modelSource, ProjectBuildingRequest request )
-        throws ProjectBuildingException
+    public ProjectBuildingResult build(ModelSource modelSource, ProjectBuildingRequest request)
+            throws ProjectBuildingException
     {
         return build( null, modelSource,
-                 new InternalConfig( request, null, useGlobalModelCache() ? getModelCache() : null ) );
+                new InternalConfig( request, null, useGlobalModelCache() ? getModelCache() : null ) );
     }
 
-    private ProjectBuildingResult build( File pomFile, ModelSource modelSource, InternalConfig config )
-        throws ProjectBuildingException
+    private ProjectBuildingResult build(File pomFile, ModelSource modelSource, InternalConfig config)
+            throws ProjectBuildingException
     {
         ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
 
@@ -149,7 +150,7 @@ public class DefaultProjectBuilder
 
             MavenProject project = projectBuildingRequest.getProject();
 
-            List<ModelProblem> modelProblems = null;
+            List< ModelProblem > modelProblems = null;
             Throwable error = null;
 
             if ( project == null )
@@ -160,7 +161,7 @@ public class DefaultProjectBuilder
                 project.setFile( pomFile );
 
                 DefaultModelBuildingListener listener =
-                    new DefaultModelBuildingListener( project, projectBuildingHelper, projectBuildingRequest );
+                        new DefaultModelBuildingListener( project, projectBuildingHelper, projectBuildingRequest );
                 request.setModelBuildingListener( listener );
 
                 request.setPomFile( pomFile );
@@ -171,8 +172,7 @@ public class DefaultProjectBuilder
                 try
                 {
                     result = modelBuilder.build( request );
-                }
-                catch ( ModelBuildingException e )
+                } catch (ModelBuildingException e)
                 {
                     result = e.getResult();
                     if ( result == null || result.getEffectiveModel() == null )
@@ -185,10 +185,9 @@ public class DefaultProjectBuilder
 
                 modelProblems = result.getProblems();
 
-                initProject( project, Collections.<String, MavenProject>emptyMap(), true,
-                             result, new HashMap<File, Boolean>(), projectBuildingRequest );
-            }
-            else if ( projectBuildingRequest.isResolveDependencies() )
+                initProject( project, Collections.< String, MavenProject >emptyMap(), true,
+                        result, new HashMap< File, Boolean >(), projectBuildingRequest );
+            } else if ( projectBuildingRequest.isResolveDependencies() )
             {
                 projectBuildingHelper.selectProjectRealm( project );
             }
@@ -210,14 +209,13 @@ public class DefaultProjectBuilder
             }
 
             return result;
-        }
-        finally
+        } finally
         {
             Thread.currentThread().setContextClassLoader( oldContextClassLoader );
         }
     }
 
-    private DependencyResolutionResult resolveDependencies( MavenProject project, RepositorySystemSession session )
+    private DependencyResolutionResult resolveDependencies(MavenProject project, RepositorySystemSession session)
     {
         DependencyResolutionResult resolutionResult;
 
@@ -225,17 +223,16 @@ public class DefaultProjectBuilder
         {
             DefaultDependencyResolutionRequest resolution = new DefaultDependencyResolutionRequest( project, session );
             resolutionResult = dependencyResolver.resolve( resolution );
-        }
-        catch ( DependencyResolutionException e )
+        } catch (DependencyResolutionException e)
         {
             resolutionResult = e.getResult();
         }
 
-        Set<Artifact> artifacts = new LinkedHashSet<>();
+        Set< Artifact > artifacts = new LinkedHashSet<>();
         if ( resolutionResult.getDependencyGraph() != null )
         {
             RepositoryUtils.toArtifacts( artifacts, resolutionResult.getDependencyGraph().getChildren(),
-                                         Collections.singletonList( project.getArtifact().getId() ), null );
+                    Collections.singletonList( project.getArtifact().getId() ), null );
 
             // Maven 2.x quirk: an artifact always points at the local repo, regardless whether resolved or not
             LocalRepositoryManager lrm = session.getLocalRepositoryManager();
@@ -254,9 +251,9 @@ public class DefaultProjectBuilder
         return resolutionResult;
     }
 
-    private List<String> getProfileIds( List<Profile> profiles )
+    private List< String > getProfileIds(List< Profile > profiles)
     {
-        List<String> ids = new ArrayList<>( profiles.size() );
+        List< String > ids = new ArrayList<>( profiles.size() );
 
         for ( Profile profile : profiles )
         {
@@ -266,7 +263,7 @@ public class DefaultProjectBuilder
         return ids;
     }
 
-    private ModelBuildingRequest getModelBuildingRequest( InternalConfig config )
+    private ModelBuildingRequest getModelBuildingRequest(InternalConfig config)
     {
         ProjectBuildingRequest configuration = config.request;
 
@@ -275,8 +272,8 @@ public class DefaultProjectBuilder
         RequestTrace trace = RequestTrace.newChild( null, configuration ).newChild( request );
 
         ModelResolver resolver =
-            new ProjectModelResolver( config.session, trace, repoSystem, repositoryManager, config.repositories,
-                                      configuration.getRepositoryMerging(), config.modelPool );
+                new ProjectModelResolver( config.session, trace, repoSystem, repositoryManager, config.repositories,
+                        configuration.getRepositoryMerging(), config.modelPool );
 
         request.setValidationLevel( configuration.getValidationLevel() );
         request.setProcessPlugins( configuration.isProcessPlugins() );
@@ -293,15 +290,15 @@ public class DefaultProjectBuilder
     }
 
     @Override
-    public ProjectBuildingResult build( Artifact artifact, ProjectBuildingRequest request )
-        throws ProjectBuildingException
+    public ProjectBuildingResult build(Artifact artifact, ProjectBuildingRequest request)
+            throws ProjectBuildingException
     {
         return build( artifact, false, request );
     }
 
     @Override
-    public ProjectBuildingResult build( Artifact artifact, boolean allowStubModel, ProjectBuildingRequest request )
-        throws ProjectBuildingException
+    public ProjectBuildingResult build(Artifact artifact, boolean allowStubModel, ProjectBuildingRequest request)
+            throws ProjectBuildingException
     {
         org.eclipse.aether.artifact.Artifact pomArtifact = RepositoryUtils.toArtifact( artifact );
         pomArtifact = ArtifactDescriptorUtils.toPomArtifact( pomArtifact );
@@ -319,15 +316,14 @@ public class DefaultProjectBuilder
 
             pomArtifact = pomResult.getArtifact();
             localProject = pomResult.getRepository() instanceof WorkspaceRepository;
-        }
-        catch ( org.eclipse.aether.resolution.ArtifactResolutionException e )
+        } catch (org.eclipse.aether.resolution.ArtifactResolutionException e)
         {
             if ( e.getResults().get( 0 ).isMissing() && allowStubModel )
             {
                 return build( null, createStubModelSource( artifact ), config );
             }
             throw new ProjectBuildingException( artifact.getId(),
-                                                "Error resolving project artifact: " + e.getMessage(), e );
+                    "Error resolving project artifact: " + e.getMessage(), e );
         }
 
         File pomFile = pomArtifact.getFile();
@@ -342,7 +338,7 @@ public class DefaultProjectBuilder
         return build( localProject ? pomFile : null, new FileModelSource( pomFile ), config );
     }
 
-    private ModelSource createStubModelSource( Artifact artifact )
+    private ModelSource createStubModelSource(Artifact artifact)
     {
         StringBuilder buffer = new StringBuilder( 1024 );
 
@@ -359,23 +355,23 @@ public class DefaultProjectBuilder
     }
 
     @Override
-    public List<ProjectBuildingResult> build( List<File> pomFiles, boolean recursive, ProjectBuildingRequest request )
-        throws ProjectBuildingException
+    public List< ProjectBuildingResult > build(List< File > pomFiles, boolean recursive, ProjectBuildingRequest request)
+            throws ProjectBuildingException
     {
-        List<ProjectBuildingResult> results = new ArrayList<>();
+        List< ProjectBuildingResult > results = new ArrayList<>();
 
-        List<InterimResult> interimResults = new ArrayList<>();
+        List< InterimResult > interimResults = new ArrayList<>();
 
         ReactorModelPool modelPool = new ReactorModelPool();
 
         InternalConfig config = new InternalConfig( request, modelPool,
                 useGlobalModelCache() ? getModelCache() : new ReactorModelCache() );
 
-        Map<String, MavenProject> projectIndex = new HashMap<>( 256 );
+        Map< String, MavenProject > projectIndex = new HashMap<>( 256 );
 
         boolean noErrors =
-            build( results, interimResults, projectIndex, pomFiles, new LinkedHashSet<File>(), true, recursive,
-                   config );
+                build( results, interimResults, projectIndex, pomFiles, new LinkedHashSet< File >(), true, recursive,
+                        config );
 
         populateReactorModelPool( modelPool, interimResults );
 
@@ -384,10 +380,9 @@ public class DefaultProjectBuilder
         try
         {
             noErrors =
-                build( results, new ArrayList<MavenProject>(), projectIndex, interimResults, request,
-                       new HashMap<File, Boolean>(), config.session ) && noErrors;
-        }
-        finally
+                    build( results, new ArrayList< MavenProject >(), projectIndex, interimResults, request,
+                            new HashMap< File, Boolean >(), config.session ) && noErrors;
+        } finally
         {
             Thread.currentThread().setContextClassLoader( oldContextClassLoader );
         }
@@ -401,9 +396,9 @@ public class DefaultProjectBuilder
     }
 
     @SuppressWarnings( "checkstyle:parameternumber" )
-    private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults,
-                           Map<String, MavenProject> projectIndex, List<File> pomFiles, Set<File> aggregatorFiles,
-                           boolean isRoot, boolean recursive, InternalConfig config )
+    private boolean build(List< ProjectBuildingResult > results, List< InterimResult > interimResults,
+                          Map< String, MavenProject > projectIndex, List< File > pomFiles, Set< File > aggregatorFiles,
+                          boolean isRoot, boolean recursive, InternalConfig config)
     {
         boolean noErrors = true;
 
@@ -423,9 +418,9 @@ public class DefaultProjectBuilder
     }
 
     @SuppressWarnings( "checkstyle:parameternumber" )
-    private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults,
-                           Map<String, MavenProject> projectIndex, File pomFile, Set<File> aggregatorFiles,
-                           boolean isRoot, boolean recursive, InternalConfig config )
+    private boolean build(List< ProjectBuildingResult > results, List< InterimResult > interimResults,
+                          Map< String, MavenProject > projectIndex, File pomFile, Set< File > aggregatorFiles,
+                          boolean isRoot, boolean recursive, InternalConfig config)
     {
         boolean noErrors = true;
 
@@ -439,22 +434,21 @@ public class DefaultProjectBuilder
         request.setLocationTracking( true );
 
         DefaultModelBuildingListener listener =
-            new DefaultModelBuildingListener( project, projectBuildingHelper, config.request );
+                new DefaultModelBuildingListener( project, projectBuildingHelper, config.request );
         request.setModelBuildingListener( listener );
 
         ModelBuildingResult result;
         try
         {
             result = modelBuilder.build( request );
-        }
-        catch ( ModelBuildingException e )
+        } catch (ModelBuildingException e)
         {
             result = e.getResult();
             if ( result == null || result.getEffectiveModel() == null )
             {
-                 results.add( new DefaultProjectBuildingResult( e.getModelId(), pomFile, e.getProblems() ) );
+                results.add( new DefaultProjectBuildingResult( e.getModelId(), pomFile, e.getProblems() ) );
 
-                 return false;
+                return false;
             }
             // validation error, continue project building and delay failing to help IDEs
             // result.getProblems().addAll(e.getProblems()) ?
@@ -465,12 +459,11 @@ public class DefaultProjectBuilder
         try
         {
             // first pass: build without building parent.
-            initProject( project, projectIndex, false, result, new HashMap<File, Boolean>( 0 ), config.request );
-        }
-        catch ( InvalidArtifactRTException iarte )
+            initProject( project, projectIndex, false, result, new HashMap< File, Boolean >( 0 ), config.request );
+        } catch (InvalidArtifactRTException iarte)
         {
             result.getProblems().add( new DefaultModelProblem( null, ModelProblem.Severity.ERROR, null, model, -1, -1,
-                  iarte ) );
+                    iarte ) );
         }
 
         projectIndex.put( result.getModelIds().get( 0 ), project );
@@ -482,7 +475,7 @@ public class DefaultProjectBuilder
         {
             File basedir = pomFile.getParentFile();
 
-            List<File> moduleFiles = new ArrayList<>();
+            List< File > moduleFiles = new ArrayList<>();
 
             for ( String module : model.getModules() )
             {
@@ -503,9 +496,9 @@ public class DefaultProjectBuilder
                 if ( !moduleFile.isFile() )
                 {
                     ModelProblem problem =
-                        new DefaultModelProblem( "Child module " + moduleFile + " of " + pomFile
-                            + " does not exist", ModelProblem.Severity.ERROR, ModelProblem.Version.BASE, model, -1,
-                                                 -1, null );
+                            new DefaultModelProblem( "Child module " + moduleFile + " of " + pomFile
+                                    + " does not exist", ModelProblem.Severity.ERROR, ModelProblem.Version.BASE, model, -1,
+                                    -1, null );
                     result.getProblems().add( problem );
 
                     noErrors = false;
@@ -519,13 +512,11 @@ public class DefaultProjectBuilder
                     try
                     {
                         moduleFile = moduleFile.getCanonicalFile();
-                    }
-                    catch ( IOException e )
+                    } catch (IOException e)
                     {
                         moduleFile = moduleFile.getAbsoluteFile();
                     }
-                }
-                else
+                } else
                 {
                     moduleFile = new File( moduleFile.toURI().normalize() );
                 }
@@ -540,9 +531,9 @@ public class DefaultProjectBuilder
                     buffer.append( moduleFile );
 
                     ModelProblem problem =
-                        new DefaultModelProblem( "Child module " + moduleFile + " of " + pomFile
-                            + " forms aggregation cycle " + buffer, ModelProblem.Severity.ERROR,
-                                                 ModelProblem.Version.BASE, model, -1, -1, null );
+                            new DefaultModelProblem( "Child module " + moduleFile + " of " + pomFile
+                                    + " forms aggregation cycle " + buffer, ModelProblem.Severity.ERROR,
+                                    ModelProblem.Version.BASE, model, -1, -1, null );
                     result.getProblems().add( problem );
 
                     noErrors = false;
@@ -556,7 +547,7 @@ public class DefaultProjectBuilder
             interimResult.modules = new ArrayList<>();
 
             if ( !build( results, interimResult.modules, projectIndex, moduleFiles, aggregatorFiles, false,
-                         recursive, config ) )
+                    recursive, config ) )
             {
                 noErrors = false;
             }
@@ -578,10 +569,10 @@ public class DefaultProjectBuilder
 
         boolean root;
 
-        List<InterimResult> modules = Collections.emptyList();
+        List< InterimResult > modules = Collections.emptyList();
 
-        InterimResult( File pomFile, ModelBuildingRequest request, ModelBuildingResult result,
-                       DefaultModelBuildingListener listener, boolean root )
+        InterimResult(File pomFile, ModelBuildingRequest request, ModelBuildingResult result,
+                      DefaultModelBuildingListener listener, boolean root)
         {
             this.pomFile = pomFile;
             this.request = request;
@@ -592,7 +583,7 @@ public class DefaultProjectBuilder
 
     }
 
-    private void populateReactorModelPool( ReactorModelPool reactorModelPool, List<InterimResult> interimResults )
+    private void populateReactorModelPool(ReactorModelPool reactorModelPool, List< InterimResult > interimResults)
     {
         for ( InterimResult interimResult : interimResults )
         {
@@ -603,10 +594,10 @@ public class DefaultProjectBuilder
         }
     }
 
-    private boolean build( List<ProjectBuildingResult> results, List<MavenProject> projects,
-                           Map<String, MavenProject> projectIndex, List<InterimResult> interimResults,
-                           ProjectBuildingRequest request, Map<File, Boolean> profilesXmls,
-                           RepositorySystemSession session )
+    private boolean build(List< ProjectBuildingResult > results, List< MavenProject > projects,
+                          Map< String, MavenProject > projectIndex, List< InterimResult > interimResults,
+                          ProjectBuildingRequest request, Map< File, Boolean > profilesXmls,
+                          RepositorySystemSession session)
     {
         boolean noErrors = true;
 
@@ -621,17 +612,16 @@ public class DefaultProjectBuilder
                 try
                 {
                     initProject( project, projectIndex, true, result, profilesXmls, request );
-                }
-                catch ( InvalidArtifactRTException iarte )
+                } catch (InvalidArtifactRTException iarte)
                 {
                     result.getProblems().add( new DefaultModelProblem( null, ModelProblem.Severity.ERROR, null,
                             result.getEffectiveModel(), -1, -1, iarte ) );
                 }
 
-                List<MavenProject> modules = new ArrayList<>();
+                List< MavenProject > modules = new ArrayList<>();
                 noErrors =
-                    build( results, modules, projectIndex, interimResult.modules, request, profilesXmls, session )
-                    && noErrors;
+                        build( results, modules, projectIndex, interimResult.modules, request, profilesXmls, session )
+                                && noErrors;
 
                 projects.addAll( modules );
                 projects.add( project );
@@ -645,15 +635,13 @@ public class DefaultProjectBuilder
                 }
 
                 results.add( new DefaultProjectBuildingResult( project, result.getProblems(), resolutionResult ) );
-            }
-            catch ( ModelBuildingException e )
+            } catch (ModelBuildingException e)
             {
                 DefaultProjectBuildingResult result = null;
                 if ( project == null )
                 {
                     result = new DefaultProjectBuildingResult( e.getModelId(), interimResult.pomFile, e.getProblems() );
-                }
-                else
+                } else
                 {
                     result = new DefaultProjectBuildingResult( project, e.getProblems(), null );
                 }
@@ -667,9 +655,9 @@ public class DefaultProjectBuilder
     }
 
     @SuppressWarnings( "checkstyle:methodlength" )
-    private void initProject( MavenProject project, Map<String, MavenProject> projects,
-                              boolean buildParentIfNotExisting, ModelBuildingResult result,
-                              Map<File, Boolean> profilesXmls, ProjectBuildingRequest projectBuildingRequest )
+    private void initProject(MavenProject project, Map< String, MavenProject > projects,
+                             boolean buildParentIfNotExisting, ModelBuildingResult result,
+                             Map< File, Boolean > profilesXmls, ProjectBuildingRequest projectBuildingRequest)
     {
         Model model = result.getEffectiveModel();
 
@@ -680,8 +668,8 @@ public class DefaultProjectBuilder
         initParent( project, projects, buildParentIfNotExisting, result, projectBuildingRequest );
 
         Artifact projectArtifact =
-            repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null,
-                                             project.getPackaging() );
+                repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null,
+                        project.getPackaging() );
         project.setArtifact( projectArtifact );
 
         if ( project.getFile() != null && buildParentIfNotExisting ) // only set those on 2nd phase, ignore on 1st pass
@@ -692,7 +680,7 @@ public class DefaultProjectBuilder
             project.addTestCompileSourceRoot( build.getTestSourceDirectory() );
         }
 
-        List<Profile> activeProfiles = new ArrayList<>();
+        List< Profile > activeProfiles = new ArrayList<>();
         activeProfiles.addAll( result.getActivePomProfiles( result.getModelIds().get( 0 ) ) );
         activeProfiles.addAll( result.getActiveExternalProfiles() );
         project.setActiveProfiles( activeProfiles );
@@ -707,9 +695,9 @@ public class DefaultProjectBuilder
         if ( modelId != null )
         {
             ModelProblem problem =
-                new DefaultModelProblem( "Detected profiles.xml alongside " + modelId
-                    + ", this file is no longer supported and was ignored" + ", please use the settings.xml instead",
-                                         ModelProblem.Severity.WARNING, ModelProblem.Version.V30, model, -1, -1, null );
+                    new DefaultModelProblem( "Detected profiles.xml alongside " + modelId
+                            + ", this file is no longer supported and was ignored" + ", please use the settings.xml instead",
+                            ModelProblem.Severity.WARNING, ModelProblem.Version.V30, model, -1, -1, null );
             result.getProblems().add( problem );
         }
 
@@ -720,20 +708,18 @@ public class DefaultProjectBuilder
         project.setProjectBuildingRequest( projectBuildingRequest );
 
         // pluginArtifacts
-        Set<Artifact> pluginArtifacts = new HashSet<>();
-        for ( Plugin plugin : project.getBuildPlugins() )
-        {
-            Artifact artifact = repositorySystem.createPluginArtifact( plugin );
+        Set< Artifact > pluginArtifacts = project.getBuildPlugins()
+                .stream()
+                .map( plugin -> repositorySystem.createPluginArtifact( plugin ) )
+                .filter( artifact -> artifact != null )
+                .collect( Collectors.toSet() );
 
-            if ( artifact != null )
-            {
-                pluginArtifacts.add( artifact );
-            }
-        }
         project.setPluginArtifacts( pluginArtifacts );
 
         // reportArtifacts
-        Set<Artifact> reportArtifacts = new HashSet<>();
+        project.getReportPlugins().stream()
+                .map;
+        Set< Artifact > reportArtifacts = new HashSet<>();
         for ( ReportPlugin report : project.getReportPlugins() )
         {
             Plugin pp = new Plugin();
@@ -751,8 +737,8 @@ public class DefaultProjectBuilder
         project.setReportArtifacts( reportArtifacts );
 
         // extensionArtifacts
-        Set<Artifact> extensionArtifacts = new HashSet<>();
-        List<Extension> extensions = project.getBuildExtensions();
+        Set< Artifact > extensionArtifacts = new HashSet<>();
+        List< Extension > extensions = project.getBuildExtensions();
         if ( extensions != null )
         {
             for ( Extension ext : extensions )
@@ -761,14 +747,13 @@ public class DefaultProjectBuilder
                 if ( StringUtils.isEmpty( ext.getVersion() ) )
                 {
                     version = "RELEASE";
-                }
-                else
+                } else
                 {
                     version = ext.getVersion();
                 }
 
                 Artifact artifact =
-                    repositorySystem.createArtifact( ext.getGroupId(), ext.getArtifactId(), version, null, "jar" );
+                        repositorySystem.createArtifact( ext.getGroupId(), ext.getArtifactId(), version, null, "jar" );
 
                 if ( artifact != null )
                 {
@@ -779,54 +764,54 @@ public class DefaultProjectBuilder
         project.setExtensionArtifacts( extensionArtifacts );
 
         // managedVersionMap
-        Map<String, Artifact> map = null;
+        Map< String, Artifact > map = null;
         if ( repositorySystem != null )
         {
             final DependencyManagement dependencyManagement = project.getDependencyManagement();
             if ( ( dependencyManagement != null ) && ( ( dependencyManagement.getDependencies() ) != null )
-                && ( dependencyManagement.getDependencies().size() > 0 ) )
+                    && ( dependencyManagement.getDependencies().size() > 0 ) )
             {
-                map = new AbstractMap<String, Artifact>()
+                map = new AbstractMap< String, Artifact >()
                 {
-                    HashMap<String, Artifact> delegate;
+                    HashMap< String, Artifact > delegate;
 
                     @Override
-                    public Set<Entry<String, Artifact>> entrySet()
+                    public Set< Entry< String, Artifact > > entrySet()
                     {
                         return Collections.unmodifiableSet( compute().entrySet() );
                     }
 
                     @Override
-                    public Set<String> keySet()
+                    public Set< String > keySet()
                     {
                         return Collections.unmodifiableSet( compute().keySet() );
                     }
 
                     @Override
-                    public Collection<Artifact> values()
+                    public Collection< Artifact > values()
                     {
                         return Collections.unmodifiableCollection( compute().values() );
                     }
 
                     @Override
-                    public boolean containsValue( Object value )
+                    public boolean containsValue(Object value)
                     {
                         return compute().containsValue( value );
                     }
 
                     @Override
-                    public boolean containsKey( Object key )
+                    public boolean containsKey(Object key)
                     {
                         return compute().containsKey( key );
                     }
 
                     @Override
-                    public Artifact get( Object key )
+                    public Artifact get(Object key)
                     {
                         return compute().get( key );
                     }
 
-                    HashMap<String, Artifact> compute()
+                    HashMap< String, Artifact > compute()
                     {
                         if ( delegate == null )
                         {
@@ -845,8 +830,7 @@ public class DefaultProjectBuilder
                         return delegate;
                     }
                 };
-            }
-            else
+            } else
             {
                 map = Collections.emptyMap();
             }
@@ -855,7 +839,7 @@ public class DefaultProjectBuilder
 
         // release artifact repository
         if ( project.getDistributionManagement() != null
-                        && project.getDistributionManagement().getRepository() != null )
+                && project.getDistributionManagement().getRepository() != null )
         {
             try
             {
@@ -864,22 +848,21 @@ public class DefaultProjectBuilder
                 {
                     ArtifactRepository repo = repositorySystem.buildArtifactRepository( r );
                     repositorySystem.injectProxy( projectBuildingRequest.getRepositorySession(),
-                                                  Arrays.asList( repo ) );
+                            Arrays.asList( repo ) );
                     repositorySystem.injectAuthentication( projectBuildingRequest.getRepositorySession(),
-                                                           Arrays.asList( repo ) );
+                            Arrays.asList( repo ) );
                     project.setReleaseArtifactRepository( repo );
                 }
-            }
-            catch ( InvalidRepositoryException e )
+            } catch (InvalidRepositoryException e)
             {
                 throw new IllegalStateException( "Failed to create release distribution repository for "
-                    + project.getId(), e );
+                        + project.getId(), e );
             }
         }
 
         // snapshot artifact repository
         if ( project.getDistributionManagement() != null
-            && project.getDistributionManagement().getSnapshotRepository() != null )
+                && project.getDistributionManagement().getSnapshotRepository() != null )
         {
             try
             {
@@ -888,26 +871,25 @@ public class DefaultProjectBuilder
                 {
                     ArtifactRepository repo = repositorySystem.buildArtifactRepository( r );
                     repositorySystem.injectProxy( projectBuildingRequest.getRepositorySession(),
-                                                  Arrays.asList( repo ) );
+                            Arrays.asList( repo ) );
                     repositorySystem.injectAuthentication( projectBuildingRequest.getRepositorySession(),
-                                                           Arrays.asList( repo ) );
+                            Arrays.asList( repo ) );
                     project.setSnapshotArtifactRepository( repo );
                 }
-            }
-            catch ( InvalidRepositoryException e )
+            } catch (InvalidRepositoryException e)
             {
                 throw new IllegalStateException( "Failed to create snapshot distribution repository for "
-                    + project.getId(), e );
+                        + project.getId(), e );
             }
         }
     }
 
-    private void initParent( MavenProject project, Map<String, MavenProject> projects, boolean buildParentIfNotExisting,
-                             ModelBuildingResult result, ProjectBuildingRequest projectBuildingRequest )
+    private void initParent(MavenProject project, Map< String, MavenProject > projects, boolean buildParentIfNotExisting,
+                            ModelBuildingResult result, ProjectBuildingRequest projectBuildingRequest)
     {
         Model parentModel = result.getModelIds().size() > 1 && !result.getModelIds().get( 1 ).isEmpty()
-                                ? result.getRawModel( result.getModelIds().get( 1 ) )
-                                : null;
+                ? result.getRawModel( result.getModelIds().get( 1 ) )
+                : null;
 
         if ( parentModel != null )
         {
@@ -915,8 +897,8 @@ public class DefaultProjectBuilder
             final String parentVersion = inheritedVersion( result, 1 );
 
             project.setParentArtifact( repositorySystem.createProjectArtifact( parentGroupId,
-                                                                               parentModel.getArtifactId(),
-                                                                               parentVersion ) );
+                    parentModel.getArtifactId(),
+                    parentVersion ) );
 
             // org.apache.maven.its.mng4834:parent:0.1
             String parentModelId = result.getModelIds().get( 1 );
@@ -936,38 +918,33 @@ public class DefaultProjectBuilder
                     try
                     {
                         parent = build( parentPomFile, projectBuildingRequest ).getProject();
-                    }
-                    catch ( ProjectBuildingException e )
+                    } catch (ProjectBuildingException e)
                     {
                         // MNG-4488 where let invalid parents slide on by
                         if ( logger.isDebugEnabled() )
                         {
                             // Message below is checked for in the MNG-2199 core IT.
                             logger.warn( "Failed to build parent project for " + project.getId(), e );
-                        }
-                        else
+                        } else
                         {
                             // Message below is checked for in the MNG-2199 core IT.
                             logger.warn( "Failed to build parent project for " + project.getId() );
                         }
                     }
-                }
-                else
+                } else
                 {
                     Artifact parentArtifact = project.getParentArtifact();
                     try
                     {
                         parent = build( parentArtifact, projectBuildingRequest ).getProject();
-                    }
-                    catch ( ProjectBuildingException e )
+                    } catch (ProjectBuildingException e)
                     {
                         // MNG-4488 where let invalid parents slide on by
                         if ( logger.isDebugEnabled() )
                         {
                             // Message below is checked for in the MNG-2199 core IT.
                             logger.warn( "Failed to build parent project for " + project.getId(), e );
-                        }
-                        else
+                        } else
                         {
                             // Message below is checked for in the MNG-2199 core IT.
                             logger.warn( "Failed to build parent project for " + project.getId() );
@@ -983,7 +960,7 @@ public class DefaultProjectBuilder
         }
     }
 
-    private static String inheritedGroupId( final ModelBuildingResult result, final int modelIndex )
+    private static String inheritedGroupId(final ModelBuildingResult result, final int modelIndex)
     {
         String groupId = null;
         final String modelId = result.getModelIds().get( modelIndex );
@@ -992,15 +969,15 @@ public class DefaultProjectBuilder
         {
             final Model model = result.getRawModel( modelId );
             groupId = model.getGroupId() != null
-                          ? model.getGroupId()
-                          : inheritedGroupId( result, modelIndex + 1 );
+                    ? model.getGroupId()
+                    : inheritedGroupId( result, modelIndex + 1 );
 
         }
 
         return groupId;
     }
 
-    private static String inheritedVersion( final ModelBuildingResult result, final int modelIndex )
+    private static String inheritedVersion(final ModelBuildingResult result, final int modelIndex)
     {
         String version = null;
         final String modelId = result.getModelIds().get( modelIndex );
@@ -1009,15 +986,15 @@ public class DefaultProjectBuilder
         {
             final Model model = result.getRawModel( modelId );
             version = model.getVersion() != null
-                          ? model.getVersion()
-                          : inheritedVersion( result, modelIndex + 1 );
+                    ? model.getVersion()
+                    : inheritedVersion( result, modelIndex + 1 );
 
         }
 
         return version;
     }
 
-    private String findProfilesXml( ModelBuildingResult result, Map<File, Boolean> profilesXmls )
+    private String findProfilesXml(ModelBuildingResult result, Map< File, Boolean > profilesXmls)
     {
         for ( String modelId : result.getModelIds() )
         {
@@ -1054,20 +1031,20 @@ public class DefaultProjectBuilder
 
         private final RepositorySystemSession session;
 
-        private final List<RemoteRepository> repositories;
+        private final List< RemoteRepository > repositories;
 
         private final ReactorModelPool modelPool;
 
         private final ReactorModelCache modelCache;
 
-        InternalConfig( ProjectBuildingRequest request, ReactorModelPool modelPool, ReactorModelCache modelCache )
+        InternalConfig(ProjectBuildingRequest request, ReactorModelPool modelPool, ReactorModelCache modelCache)
         {
             this.request = request;
             this.modelPool = modelPool;
             this.modelCache = modelCache;
             session =
-                LegacyLocalRepositoryManager.overlay( request.getLocalRepository(), request.getRepositorySession(),
-                                                      repoSystem );
+                    LegacyLocalRepositoryManager.overlay( request.getLocalRepository(), request.getRepositorySession(),
+                            repoSystem );
             repositories = RepositoryUtils.toRepos( request.getRemoteRepositories() );
         }
 
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
index 17da655..ca4d1e7 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java
@@ -19,13 +19,6 @@ package org.apache.maven.cli.event;
  * under the License.
  */
 
-import static org.apache.maven.cli.CLIReportingUtils.formatDuration;
-import static org.apache.maven.cli.CLIReportingUtils.formatTimestamp;
-import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
-
-import java.util.List;
-import java.util.Objects;
-
 import org.apache.maven.execution.AbstractExecutionListener;
 import org.apache.maven.execution.BuildFailure;
 import org.apache.maven.execution.BuildSuccess;
@@ -41,13 +34,20 @@ import org.codehaus.plexus.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.List;
+import java.util.Objects;
+
+import static org.apache.maven.cli.CLIReportingUtils.formatDuration;
+import static org.apache.maven.cli.CLIReportingUtils.formatTimestamp;
+import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
+
 /**
  * Logs execution events to logger, eventually user-supplied.
  *
  * @author Benjamin Bentmann
  */
 public class ExecutionEventLogger
-    extends AbstractExecutionListener
+        extends AbstractExecutionListener
 {
     private final Logger logger;
 
@@ -64,12 +64,12 @@ public class ExecutionEventLogger
     }
 
     // TODO should we deprecate?
-    public ExecutionEventLogger( Logger logger )
+    public ExecutionEventLogger(Logger logger)
     {
         this.logger = Objects.requireNonNull( logger, "logger cannot be null" );
     }
 
-    private static String chars( char c, int count )
+    private static String chars(char c, int count)
     {
         StringBuilder buffer = new StringBuilder( count );
 
@@ -81,18 +81,18 @@ public class ExecutionEventLogger
         return buffer.toString();
     }
 
-    private void infoLine( char c )
+    private void infoLine(char c)
     {
         infoMain( chars( c, LINE_LENGTH ) );
     }
 
-    private void infoMain( String msg )
+    private void infoMain(String msg)
     {
         logger.info( buffer().strong( msg ).toString() );
     }
 
     @Override
-    public void projectDiscoveryStarted( ExecutionEvent event )
+    public void projectDiscoveryStarted(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -101,7 +101,7 @@ public class ExecutionEventLogger
     }
 
     @Override
-    public void sessionStarted( ExecutionEvent event )
+    public void sessionStarted(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() && event.getSession().getProjects().size() > 1 )
         {
@@ -111,7 +111,7 @@ public class ExecutionEventLogger
 
             logger.info( "" );
 
-            final List<MavenProject> projects = event.getSession().getProjects();
+            final List< MavenProject > projects = event.getSession().getProjects();
             for ( MavenProject project : projects )
             {
                 int len = LINE_LENGTH - project.getName().length() - project.getPackaging().length() - 2;
@@ -124,7 +124,7 @@ public class ExecutionEventLogger
     }
 
     @Override
-    public void sessionEnded( ExecutionEvent event )
+    public void sessionEnded(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -141,25 +141,16 @@ public class ExecutionEventLogger
         }
     }
 
-    private boolean isSingleVersionedReactor( MavenSession session )
+    private boolean isSingleVersionedReactor(MavenSession session)
     {
-        boolean result = true;
-
         MavenProject topProject = session.getTopLevelProject();
-        List<MavenProject> sortedProjects = session.getProjectDependencyGraph().getSortedProjects();
-        for ( MavenProject mavenProject : sortedProjects )
-        {
-            if ( !topProject.getVersion().equals( mavenProject.getVersion() ) )
-            {
-                result = false;
-                break;
-            }
-        }
+        List< MavenProject > sortedProjects = session.getProjectDependencyGraph().getSortedProjects();
 
-        return result;
+        return sortedProjects.stream()
+                .anyMatch( mavenProject -> !topProject.getVersion().equals( mavenProject.getVersion() ) );
     }
 
-    private void logReactorSummary( MavenSession session )
+    private void logReactorSummary(MavenSession session)
     {
         boolean isSingleVersion = isSingleVersionedReactor( session );
 
@@ -180,7 +171,7 @@ public class ExecutionEventLogger
 
         MavenExecutionResult result = session.getResult();
 
-        List<MavenProject> projects = session.getProjects();
+        List< MavenProject > projects = session.getProjects();
 
         for ( MavenProject project : projects )
         {
@@ -209,8 +200,7 @@ public class ExecutionEventLogger
             if ( buildSummary == null )
             {
                 buffer.append( buffer().warning( "SKIPPED" ) );
-            }
-            else if ( buildSummary instanceof BuildSuccess )
+            } else if ( buildSummary instanceof BuildSuccess )
             {
                 buffer.append( buffer().success( "SUCCESS" ) );
                 buffer.append( " [" );
@@ -222,8 +212,7 @@ public class ExecutionEventLogger
                 }
                 buffer.append( buildTimeDuration );
                 buffer.append( ']' );
-            }
-            else if ( buildSummary instanceof BuildFailure )
+            } else if ( buildSummary instanceof BuildFailure )
             {
                 buffer.append( buffer().failure( "FAILURE" ) );
                 buffer.append( " [" );
@@ -241,7 +230,7 @@ public class ExecutionEventLogger
         }
     }
 
-    private void logResult( MavenSession session )
+    private void logResult(MavenSession session)
     {
         infoLine( '-' );
         MessageBuilder buffer = buffer();
@@ -249,15 +238,14 @@ public class ExecutionEventLogger
         if ( session.getResult().hasExceptions() )
         {
             buffer.failure( "BUILD FAILURE" );
-        }
-        else
+        } else
         {
             buffer.success( "BUILD SUCCESS" );
         }
         logger.info( buffer.toString() );
     }
 
-    private void logStats( MavenSession session )
+    private void logStats(MavenSession session)
     {
         infoLine( '-' );
 
@@ -273,7 +261,7 @@ public class ExecutionEventLogger
     }
 
     @Override
-    public void projectSkipped( ExecutionEvent event )
+    public void projectSkipped(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -288,7 +276,7 @@ public class ExecutionEventLogger
     }
 
     @Override
-    public void projectStarted( ExecutionEvent event )
+    public void projectStarted(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -298,8 +286,8 @@ public class ExecutionEventLogger
 
             // -------< groupId:artifactId >-------
             String projectKey = project.getGroupId() + ':' + project.getArtifactId();
-            
-            final String preHeader  = "--< ";
+
+            final String preHeader = "--< ";
             final String postHeader = " >--";
 
             final int headerLen = preHeader.length() + projectKey.length() + postHeader.length();
@@ -307,7 +295,7 @@ public class ExecutionEventLogger
             String prefix = chars( '-', Math.max( 0, ( LINE_LENGTH - headerLen ) / 2 ) ) + preHeader;
 
             String suffix = postHeader
-                + chars( '-', Math.max( 0, LINE_LENGTH - headerLen - prefix.length() + preHeader.length() ) );
+                    + chars( '-', Math.max( 0, LINE_LENGTH - headerLen - prefix.length() + preHeader.length() ) );
 
             logger.info( buffer().strong( prefix ).project( projectKey ).strong( suffix ).toString() );
 
@@ -317,8 +305,7 @@ public class ExecutionEventLogger
             if ( totalProjects <= 1 )
             {
                 infoMain( building );
-            }
-            else
+            } else
             {
                 // display progress [i/n]
                 int number;
@@ -341,7 +328,7 @@ public class ExecutionEventLogger
     }
 
     @Override
-    public void mojoSkipped( ExecutionEvent event )
+    public void mojoSkipped(ExecutionEvent event)
     {
         if ( logger.isWarnEnabled() )
         {
@@ -354,7 +341,7 @@ public class ExecutionEventLogger
      * <pre>--- mojo-artifactId:version:goal (mojo-executionId) @ project-artifactId ---</pre>
      */
     @Override
-    public void mojoStarted( ExecutionEvent event )
+    public void mojoStarted(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -370,13 +357,14 @@ public class ExecutionEventLogger
     }
 
     // CHECKSTYLE_OFF: LineLength
+
     /**
      * <pre>&gt;&gt;&gt; mojo-artifactId:version:goal (mojo-executionId) &gt; :forked-goal @ project-artifactId &gt;&gt;&gt;</pre>
      * <pre>&gt;&gt;&gt; mojo-artifactId:version:goal (mojo-executionId) &gt; [lifecycle]phase @ project-artifactId &gt;&gt;&gt;</pre>
      */
     // CHECKSTYLE_ON: LineLength
     @Override
-    public void forkStarted( ExecutionEvent event )
+    public void forkStarted(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -394,13 +382,14 @@ public class ExecutionEventLogger
     }
 
     // CHECKSTYLE_OFF: LineLength
+
     /**
      * <pre>&lt;&lt;&lt; mojo-artifactId:version:goal (mojo-executionId) &lt; :forked-goal @ project-artifactId &lt;&lt;&lt;</pre>
      * <pre>&lt;&lt;&lt; mojo-artifactId:version:goal (mojo-executionId) &lt; [lifecycle]phase @ project-artifactId &lt;&lt;&lt;</pre>
      */
     // CHECKSTYLE_ON: LineLength
     @Override
-    public void forkSucceeded( ExecutionEvent event )
+    public void forkSucceeded(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() )
         {
@@ -419,7 +408,7 @@ public class ExecutionEventLogger
         }
     }
 
-    private void append( MessageBuilder buffer, MojoExecution me )
+    private void append(MessageBuilder buffer, MojoExecution me)
     {
         buffer.mojo( me.getArtifactId() + ':' + me.getVersion() + ':' + me.getGoal() );
         if ( me.getExecutionId() != null )
@@ -428,7 +417,7 @@ public class ExecutionEventLogger
         }
     }
 
-    private void appendForkInfo( MessageBuilder buffer, MojoDescriptor md )
+    private void appendForkInfo(MessageBuilder buffer, MojoDescriptor md)
     {
         StringBuilder buff = new StringBuilder();
         if ( StringUtils.isNotEmpty( md.getExecutePhase() ) )
@@ -441,8 +430,7 @@ public class ExecutionEventLogger
                 buff.append( ']' );
             }
             buff.append( md.getExecutePhase() );
-        }
-        else
+        } else
         {
             // forked goal
             buff.append( ':' );
@@ -451,13 +439,13 @@ public class ExecutionEventLogger
         buffer.strong( buff.toString() );
     }
 
-    private void append( MessageBuilder buffer, MavenProject project )
+    private void append(MessageBuilder buffer, MavenProject project)
     {
         buffer.a( " @ " ).project( project.getArtifactId() );
     }
 
     @Override
-    public void forkedProjectStarted( ExecutionEvent event )
+    public void forkedProjectStarted(ExecutionEvent event)
     {
         if ( logger.isInfoEnabled() && event.getMojoExecution().getForkedExecutions().size() > 1 )
         {