This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch feature/improve-javadoc-link-validation in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git
commit 7cb7b485a0937d93347ac4cdc0037e62acf86884 Author: Konrad Windszus <[email protected]> AuthorDate: Wed Oct 26 14:31:33 2022 +0200 [MPLUGIN-433] Improve javadoc link validation and allow to disable it --- .../maven/plugin/plugin/report_old/PluginReport.java | 15 ++++++++++++++- .../maven/tools/plugin/generator/PluginXdocGenerator.java | 9 ++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java index bc34746d..de607f09 100644 --- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java +++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java @@ -218,6 +218,18 @@ public class PluginReport readonly = true ) private File enhancedPluginXmlFile; + /** + * In case the internal javadoc site has not been generated (e.g. when using an aggregator javadoc report) + * link validation needs to be disabled by setting this value to {@code true}. + * This might have the drawback that some links being generated in the report are broken in case not all + * parameter types and javadoc link references are resolvable through the sites being given to + * {@link DescriptorGeneratorMojo}. + * + * @since 3.7.0 + */ + @Parameter + private boolean disableInternalJavadocLinkValidation; + /** * {@inheritDoc} */ @@ -324,7 +336,8 @@ public class PluginReport File outputDir = outputDirectory; outputDir.mkdirs(); - PluginXdocGenerator generator = new PluginXdocGenerator( getProject(), locale, getReportOutputDirectory() ); + PluginXdocGenerator generator = new PluginXdocGenerator( getProject(), locale, getReportOutputDirectory(), + disableInternalJavadocLinkValidation ); PluginToolsRequest pluginToolsRequest = new DefaultPluginToolsRequest( getProject(), pluginDescriptor ); generator.execute( outputDir, pluginToolsRequest ); } diff --git a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java index c13a1790..2694ad08 100644 --- a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java +++ b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java @@ -68,6 +68,8 @@ public class PluginXdocGenerator */ private final File reportOutputDirectory; + private final boolean disableInternalJavadocLinkValidation; + /** * Default constructor using <code>Locale.ENGLISH</code> as locale. * Used only in test cases. @@ -84,14 +86,14 @@ public class PluginXdocGenerator */ public PluginXdocGenerator( MavenProject project ) { - this( project, Locale.ENGLISH, new File( "" ).getAbsoluteFile() ); + this( project, Locale.ENGLISH, new File( "" ).getAbsoluteFile(), false ); } /** * @param project not null. * @param locale not null wanted locale. */ - public PluginXdocGenerator( MavenProject project, Locale locale, File reportOutputDirectory ) + public PluginXdocGenerator( MavenProject project, Locale locale, File reportOutputDirectory, boolean disableInternalJavadocLinkValidation ) { this.project = project; if ( locale == null ) @@ -103,6 +105,7 @@ public class PluginXdocGenerator this.locale = locale; } this.reportOutputDirectory = reportOutputDirectory; + this.disableInternalJavadocLinkValidation = disableInternalJavadocLinkValidation; } @@ -616,7 +619,7 @@ public class PluginXdocGenerator // check if link is valid URI javadocUrl = enhancedParameter.getTypeJavadocUrl(); if ( javadocUrl.isAbsolute() - || JavadocLinkGenerator.isLinkValid( javadocUrl, reportOutputDirectory.toPath() ) ) + || !disableInternalJavadocLinkValidation && JavadocLinkGenerator.isLinkValid( javadocUrl, reportOutputDirectory.toPath() ) ) { return format( "pluginxdoc.mojodescriptor.parameter.type_link", new Object[] { escapeXml( typeValue ), enhancedParameter.getTypeJavadocUrl() } );
