You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/06/20 08:40:33 UTC
[maven] 26/30: Moved the -rf helper method, including the tests,
back to MavenCli. The BuildResumer is now only focused on the
--resume feature.
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MNG-5760
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 1aca8bfe21e2560144be480b6eba862fa866aec7
Author: Martin Kanters <Ma...@infosupport.com>
AuthorDate: Sat Jun 6 10:56:55 2020 +0200
Moved the -rf helper method, including the tests, back to MavenCli. The BuildResumer is now only focused on the --resume feature.
---
.../org/apache/maven/execution/BuildResumer.java | 19 -----------
.../maven/execution/DefaultBuildResumer.java | 15 ---------
.../maven/execution/DefaultBuildResumerTest.java | 33 +------------------
.../main/java/org/apache/maven/cli/MavenCli.java | 33 ++++++++++++++++++-
.../java/org/apache/maven/cli/MavenCliTest.java | 38 ++++++++++++++++++++++
5 files changed, 71 insertions(+), 67 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/execution/BuildResumer.java b/maven-core/src/main/java/org/apache/maven/execution/BuildResumer.java
index fd6840e..8de72ca 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/BuildResumer.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/BuildResumer.java
@@ -21,8 +21,6 @@ package org.apache.maven.execution;
import org.apache.maven.project.MavenProject;
-import java.util.List;
-
/**
* This class describes most of the logic needed for the --resume / -r feature. Its goal is to ensure newer
* builds of the same project that have the -r command-line flag skip successfully built projects during earlier
@@ -56,21 +54,4 @@ public interface BuildResumer
*/
void removeResumptionData( final MavenProject rootProject );
- /**
- * A helper method to determine the value to resume the build with {@code -rf} taking into account the edge case
- * where multiple modules in the reactor have the same artifactId.
- * <p>
- * {@code -rf :artifactId} will pick up the first module which matches, but when multiple modules in the reactor
- * have the same artifactId, effective failed module might be later in build reactor.
- * This means that developer will either have to type groupId or wait for build execution of all modules which
- * were fine, but they are still before one which reported errors.
- * <p>Then the returned value is {@code groupId:artifactId} when there is a name clash and
- * {@code :artifactId} if there is no conflict.
- *
- * @param mavenProjects Maven projects which are part of build execution.
- * @param failedProject Project which has failed.
- * @return Value for -rf flag to resume build exactly from place where it failed ({@code :artifactId} in general
- * and {@code groupId:artifactId} when there is a name clash).
- */
- String getResumeFromSelector( final List<MavenProject> mavenProjects, final MavenProject failedProject );
}
diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultBuildResumer.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultBuildResumer.java
index b5fb1b6..84a6ded 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/DefaultBuildResumer.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultBuildResumer.java
@@ -93,21 +93,6 @@ public class DefaultBuildResumer implements BuildResumer
}
}
- @Override
- public String getResumeFromSelector( List<MavenProject> mavenProjects, MavenProject failedProject )
- {
- boolean hasOverlappingArtifactId = mavenProjects.stream()
- .filter( project -> failedProject.getArtifactId().equals( project.getArtifactId() ) )
- .count() > 1;
-
- if ( hasOverlappingArtifactId )
- {
- return failedProject.getGroupId() + ":" + failedProject.getArtifactId();
- }
-
- return ":" + failedProject.getArtifactId();
- }
-
// This method is made package-private for testing purposes
Properties determineResumptionProperties( MavenExecutionResult result )
{
diff --git a/maven-core/src/test/java/org/apache/maven/execution/DefaultBuildResumerTest.java b/maven-core/src/test/java/org/apache/maven/execution/DefaultBuildResumerTest.java
index d2dd9ee..0664cb4 100644
--- a/maven-core/src/test/java/org/apache/maven/execution/DefaultBuildResumerTest.java
+++ b/maven-core/src/test/java/org/apache/maven/execution/DefaultBuildResumerTest.java
@@ -168,41 +168,10 @@ public class DefaultBuildResumerTest
assertThat( request.getExcludedProjects(), contains( ":module-a", ":module-b", ":module-c" ) );
}
- @Test
- public void resumeFromSelectorIsSuggestedWithoutGroupId()
- {
- List<MavenProject> allProjects = asList(
- createMavenProject( "group", "module-a" ),
- createMavenProject( "group", "module-b" ) );
- MavenProject failedProject = allProjects.get( 0 );
-
- String selector = buildResumer.getResumeFromSelector( allProjects, failedProject );
-
- assertThat( selector, is( ":module-a" ) );
- }
-
- @Test
- public void resumeFromSelectorContainsGroupIdWhenArtifactIdIsNotUnique()
- {
- List<MavenProject> allProjects = asList(
- createMavenProject( "group-a", "module" ),
- createMavenProject( "group-b", "module" ) );
- MavenProject failedProject = allProjects.get( 0 );
-
- String selector = buildResumer.getResumeFromSelector( allProjects, failedProject );
-
- assertThat( selector, is( "group-a:module" ) );
- }
-
private MavenProject createMavenProject( String artifactId )
{
- return createMavenProject( "test", artifactId );
- }
-
- private MavenProject createMavenProject( String groupId, String artifactId )
- {
MavenProject project = new MavenProject();
- project.setGroupId( groupId );
+ project.setGroupId( "test" );
project.setArtifactId( artifactId );
return project;
}
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 7778a06..5bf6b32 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
@@ -1038,7 +1038,7 @@ public class MavenCli
}
else if ( project != null && !project.equals( sortedProjects.get( 0 ) ) )
{
- String resumeFromSelector = buildResumer.getResumeFromSelector( sortedProjects, project );
+ String resumeFromSelector = getResumeFromSelector( sortedProjects, project );
logBuildResumeHint( "mvn <args> -rf " + resumeFromSelector );
}
@@ -1066,6 +1066,37 @@ public class MavenCli
slf4jLogger.error( buffer().a( " " ).strong( resumeBuildHint ).toString() );
}
+ /**
+ * A helper method to determine the value to resume the build with {@code -rf} taking into account the edge case
+ * where multiple modules in the reactor have the same artifactId.
+ * <p>
+ * {@code -rf :artifactId} will pick up the first module which matches, but when multiple modules in the reactor
+ * have the same artifactId, effective failed module might be later in build reactor.
+ * This means that developer will either have to type groupId or wait for build execution of all modules which
+ * were fine, but they are still before one which reported errors.
+ * <p>Then the returned value is {@code groupId:artifactId} when there is a name clash and
+ * {@code :artifactId} if there is no conflict.
+ * This method is made package-private for testing purposes.
+ *
+ * @param mavenProjects Maven projects which are part of build execution.
+ * @param failedProject Project which has failed.
+ * @return Value for -rf flag to resume build exactly from place where it failed ({@code :artifactId} in general
+ * and {@code groupId:artifactId} when there is a name clash).
+ */
+ String getResumeFromSelector( List<MavenProject> mavenProjects, MavenProject failedProject )
+ {
+ boolean hasOverlappingArtifactId = mavenProjects.stream()
+ .filter( project -> failedProject.getArtifactId().equals( project.getArtifactId() ) )
+ .count() > 1;
+
+ if ( hasOverlappingArtifactId )
+ {
+ return failedProject.getGroupId() + ":" + failedProject.getArtifactId();
+ }
+
+ return ":" + failedProject.getArtifactId();
+ }
+
private void logSummary( ExceptionSummary summary, Map<String, String> references, String indent,
boolean showErrors )
{
diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
index 173b78c..b0e536f 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
@@ -19,6 +19,9 @@ package org.apache.maven.cli;
* under the License.
*/
+import static java.util.Arrays.asList;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -31,10 +34,12 @@ import static org.mockito.Mockito.times;
import java.io.File;
import java.util.Collections;
+import java.util.List;
import org.apache.commons.cli.ParseException;
import org.apache.maven.Maven;
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
+import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.logging.MessageUtils;
import org.apache.maven.toolchain.building.ToolchainsBuildingRequest;
import org.apache.maven.toolchain.building.ToolchainsBuildingResult;
@@ -346,4 +351,37 @@ public class MavenCliTest
orderdEventSpyDispatcherMock.verify(eventSpyDispatcherMock, times(1)).onEvent(any(ToolchainsBuildingResult.class));
}
+ @Test
+ public void resumeFromSelectorIsSuggestedWithoutGroupId()
+ {
+ List<MavenProject> allProjects = asList(
+ createMavenProject( "group", "module-a" ),
+ createMavenProject( "group", "module-b" ) );
+ MavenProject failedProject = allProjects.get( 0 );
+
+ String selector = cli.getResumeFromSelector( allProjects, failedProject );
+
+ assertThat( selector, is( ":module-a" ) );
+ }
+
+ @Test
+ public void resumeFromSelectorContainsGroupIdWhenArtifactIdIsNotUnique()
+ {
+ List<MavenProject> allProjects = asList(
+ createMavenProject( "group-a", "module" ),
+ createMavenProject( "group-b", "module" ) );
+ MavenProject failedProject = allProjects.get( 0 );
+
+ String selector = cli.getResumeFromSelector( allProjects, failedProject );
+
+ assertThat( selector, is( "group-a:module" ) );
+ }
+
+ private MavenProject createMavenProject( String groupId, String artifactId )
+ {
+ MavenProject project = new MavenProject();
+ project.setGroupId( groupId );
+ project.setArtifactId( artifactId );
+ return project;
+ }
}