[MJAVADOC-683] Reimplement failOnWarning
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
index 6c513a2..05dfe49 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -6057,22 +6057,41 @@
// Handle Javadoc warnings
// ----------------------------------------------------------------------
- if ( StringUtils.isNotEmpty( err.getOutput() ) && getLog().isWarnEnabled() )
+ if ( containsWarnings( err.getOutput() ) )
{
- getLog().warn( "Javadoc Warnings" );
-
- StringTokenizer token = new StringTokenizer( err.getOutput(), "\n" );
- while ( token.hasMoreTokens() )
+ if ( getLog().isWarnEnabled() )
{
- String current = token.nextToken().trim();
+ getLog().warn( "Javadoc Warnings" );
- getLog().warn( current );
+ StringTokenizer token = new StringTokenizer( err.getOutput(), "\n" );
+ while ( token.hasMoreTokens() )
+ {
+ String current = token.nextToken().trim();
+
+ getLog().warn( current );
+ }
+ }
+
+ if ( failOnWarnings )
+ {
+ throw new MavenReportException( "Project contains Javadoc Warnings" );
}
}
+ }
- if ( StringUtils.isNotEmpty( err.getOutput() ) && failOnWarnings )
+ private boolean containsWarnings( String output )
+ {
+ // JDK-8268774 / JDK-8270831
+ if ( this.javadocRuntimeVersion.isBefore( "17" ) )
{
- throw new MavenReportException( "Project contains Javadoc Warnings" );
+ return StringUtils.isNotEmpty( output );
+ }
+ else
+ {
+ return Arrays.stream( output.split( "\\R" ) )
+ .reduce( ( first, second ) -> second ) // last line
+ .filter( line -> line.matches( "\\d+ warnings?" ) )
+ .isPresent();
}
}