This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 139af8ce [MJAVADOC-721] Parse stderr output and suppress informational
lines
139af8ce is described below
commit 139af8ceaedd88d59431575eff21d859ee1548c3
Author: Markus Spann <[email protected]>
AuthorDate: Tue Jul 26 16:12:37 2022 +0200
[MJAVADOC-721] Parse stderr output and suppress informational lines
This closes #157
---
.../maven/plugins/javadoc/AbstractJavadocMojo.java | 56 +++++++++++++++++++++-
1 file changed, 54 insertions(+), 2 deletions(-)
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 543c4000..21f2ed7b 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -6081,7 +6081,25 @@ public abstract class AbstractJavadocMojo
msg.append( exitCode );
if ( StringUtils.isNotEmpty( err.getOutput() ) )
{
- msg.append( " - " ).append( err.getOutput() );
+ // parse stderr, log informational output, add all other
to exception message
+ List<String> nonInfoLines = new ArrayList<>();
+ for ( String str : err.getOutput().split( "\\R" ) )
+ {
+ if ( isInformationalOutput( str ) )
+ {
+ getLog().debug( str );
+ }
+ else
+ {
+ nonInfoLines.add( str );
+ }
+ }
+ if ( !nonInfoLines.isEmpty() )
+ {
+ msg.append( '\n' ); // new line between exit code and
warnings/errors
+ msg.append( String.join( "\n" , nonInfoLines ) );
+ }
+
}
msg.append( '\n' );
msg.append( "Command line was: " ).append( cmdLine ).append(
'\n' ).append( '\n' );
@@ -6117,7 +6135,16 @@ public abstract class AbstractJavadocMojo
{
String current = token.nextToken().trim();
- getLog().warn( current );
+ // log informational output at debug level only
+ if ( isInformationalOutput( current ) )
+ {
+ getLog().debug( current );
+ }
+ else
+ {
+ getLog().warn( current );
+ }
+
}
}
@@ -6144,6 +6171,31 @@ public abstract class AbstractJavadocMojo
}
}
+ /**
+ * Determines whether the specified string is informational output of the
Javadoc tool.<br/>
+ * Such output should not be included as exception message or logged as
warning or error.
+ * <p>
+ * The following texts are either hardcoded in the tool or can be found in
versions of the
+ * javadoc tool's English resource bundle of JDK 11 (and presumably later
versions).<br/>
+ * This method will neither help nor harm for localized (non-English)
versions of the tool.
+ * </p>
+ *
+ * @param str string to check
+ * @return true if informational output, false if not or cannot be
determined
+ */
+ private boolean isInformationalOutput( String str )
+ {
+ return str == null
+ || str.trim().isEmpty()
+ || str.startsWith( "Loading source files for package " ) //
main.Loading_source_files_for_package
+ || str.startsWith( "Loading source file " ) //
main.Loading_source_file
+ || str.startsWith( "Generating " )
+ || str.startsWith( "Constructing Javadoc information" ) //
main.Building_tree
+ || str.startsWith( "Building index for " )
+ || str.startsWith( "Building tree for " )
+ || str.startsWith( "Standard Doclet version " );
+ }
+
/**
* Patches the given Javadoc output directory to work around CVE-2013-1571
* (see http://www.kb.cert.org/vuls/id/225657).