Break build after third warning
diff --git a/src/main/java/org/apache/maven/extensions/ci/CleanInstallExtension.java b/src/main/java/org/apache/maven/extensions/ci/CleanInstallExtension.java
index a5ff0a9..c64c377 100644
--- a/src/main/java/org/apache/maven/extensions/ci/CleanInstallExtension.java
+++ b/src/main/java/org/apache/maven/extensions/ci/CleanInstallExtension.java
@@ -35,6 +35,7 @@
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -131,18 +132,28 @@
Map<State, List<Data>> groupedLines = originalLines.stream()
.collect( Collectors.groupingBy( state ) );
+ AtomicInteger counter = new AtomicInteger();
+
List<Data> disjoint = groupedLines.get( State.PROJECTKEY );
if ( !Optional.ofNullable( disjoint ).map( List::isEmpty ).orElse( true ) )
{
-
if ( session.getGoals().contains( "install" ) )
{
disjoint.stream().forEach( d ->
{
logger.warn( "Previous 'install' on this project was unnecessary "
- + "and polluted your local repository" );
+ + "and polluted your local repository" );
logger.warn( "A good Maven citizen uses 'verify' instead" );
+
+ counter.set( d.counter );
} );
+
+ if ( counter.get() > 2 )
+ {
+ logger.warn( "I warned you...." );
+ throw new MavenExecutionException( "Stubborn developer spotted",
+ session.getTopLevelProject().getFile() );
+ }
}
else
{
@@ -164,9 +175,9 @@
data.executionRootDirectory = session.getExecutionRootDirectory();
data.goals = session.getGoals();
data.projectKeys = projectKeys;
+ data.counter = counter.incrementAndGet();
newLines.add( data );
}
-
if ( !( newLines.isEmpty() && originalLines.isEmpty() ) )
{
@@ -199,8 +210,12 @@
PROJECTKEY, DEPENDENCYKEY, NONE
}
- private static class Data implements Serializable
+ private static class Data implements Serializable
{
+ private static final long serialVersionUID = -6588609095599417153L;
+
+ private int counter;
+
private String executionRootDirectory;
private List<String> goals;