asfgit closed pull request #166: [MNG-6410] Clean suggestion on build resume.
URL: https://github.com/apache/maven/pull/166
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java 
b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 7b5d97bdbe..a7ff18fbe3 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -1006,8 +1006,8 @@ private int execute( CliRequest cliRequest )
             {
                 slf4jLogger.error( "" );
                 slf4jLogger.error( "After correcting the problems, you can 
resume the build with the command" );
-                slf4jLogger.error( buffer().a( "  " ).strong( "mvn <goals> -rf 
:"
-                                + project.getArtifactId() ).toString() );
+                slf4jLogger.error( buffer().a( "  " ).strong( "mvn <goals> -rf 
"
+                    + getFailedProject( 
result.getTopologicallySortedProjects(), project ) ).toString() );
             }
 
             if ( MavenExecutionRequest.REACTOR_FAIL_NEVER.equals( 
cliRequest.request.getReactorFailureBehavior() ) )
@@ -1027,6 +1027,32 @@ private int execute( CliRequest cliRequest )
         }
     }
 
+    /**
+     * A helper method to determine value returned for re execution of build.
+     *
+     * By default -rf :artifactId will pick up first module which matches, but 
quite often failed project might be later
+     * in build queue. This means that developer will either have to type 
group id or wait for build execution of all
+     * modules which were fine, but they are still before one which reported 
errors.
+     * Since build reactor might contain multiple projects with same artifact 
id for developer convenience we print
+     * out groupId:artifactId when there is name clash and :artifactId, if 
there is no conflict.
+     *
+     * @param mavenProjects Maven projects which are part of build execution.
+     * @param failedProject Project which have failed.
+     * @return Value for -rf flag to restart build exactly from place where it 
failed.
+     */
+    private String getFailedProject( List<MavenProject> mavenProjects, 
MavenProject failedProject )
+    {
+        for ( MavenProject buildProject : mavenProjects )
+        {
+            if ( failedProject.getArtifactId().equals( 
buildProject.getArtifactId() ) && !failedProject.equals(
+                    buildProject ) )
+            {
+                return failedProject.getGroupId() + ":" + 
failedProject.getArtifactId();
+            }
+        }
+        return ":" + failedProject.getArtifactId();
+    }
+
     private void logSummary( ExceptionSummary summary, Map<String, String> 
references, String indent,
                              boolean showErrors )
     {


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to