From 599355d48349a52f6ad3021a10190a83bf0144e7 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Sat, 15 Oct 2016 17:37:33 +0000 Subject: [PATCH] [MJAVADOC-387] Handle JDK8 -Xdoclint Add proper handling of -Xdoclint. Option is only evaluated if Java 1.8+ is used otherwise a warning is issued. Due to a limitation in Modello, it cannot simply enabled by because it is umarshaled to null instead of "". One has to use all explicitly. git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1765097 13f79535-47bb-0310-9956-ffa450edef68 --- .../plugin/javadoc/AbstractJavadocMojo.java | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java b/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java index b9c24dbb0f..b215f2d475 100644 --- a/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java +++ b/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java @@ -279,6 +279,15 @@ public abstract class AbstractJavadocMojo */ private static final float SINCE_JAVADOC_1_6 = 1.6f; + /** + * For Javadoc options appears since Java 8.0. + * See + * Javadoc Technology + * + * @since 3.0.0 + */ + private static final float SINCE_JAVADOC_1_8 = 1.8f; + // ---------------------------------------------------------------------- // Mojo components // ---------------------------------------------------------------------- @@ -310,16 +319,16 @@ public abstract class AbstractJavadocMojo */ @Component private ArtifactResolver resolver; - + @Component private ResourceResolver resourceResolver; - + @Component private org.apache.maven.shared.artifact.resolve.ArtifactResolver artifactResolver; - + @Component private ArtifactHandlerManager artifactHandlerManager; - + @Component private DependencyResolver dependencyResolver; @@ -359,7 +368,7 @@ public abstract class AbstractJavadocMojo */ @Parameter( defaultValue = "${project}", readonly = true, required = true ) protected MavenProject project; - + @Parameter( defaultValue = "${plugin}", readonly = true ) private PluginDescriptor plugin; @@ -965,6 +974,16 @@ public abstract class AbstractJavadocMojo @Parameter( property = "docfilessubdirs", defaultValue = "false" ) private boolean docfilessubdirs; + /** + * Specifies specific checks to be performed on Javadoc comments. + *
+ * See doclint. + * + * @since 3.0.0 + */ + @Parameter( property = "doclint" ) + private String doclint; + /** * Specifies the title to be placed near the top of the overview summary file. *
@@ -1826,6 +1845,14 @@ protected File getJavadocDirectory() return javadocDirectory; } + /** + * @return the doclint specific checks configuration + */ + protected String getDoclint() + { + return doclint; + } + /** * @return the title to be placed near the top of the overview summary file */ @@ -1881,19 +1908,19 @@ public void execute() verifyRemovedParameter( "aggregator" ); verifyRemovedParameter( "proxyHost" ); verifyRemovedParameter( "proxyPort" ); - + doExecute(); } - + abstract void doExecute() throws MojoExecutionException, MojoFailureException; - + private void verifyRemovedParameter( String paramName ) { Object pluginConfiguration = plugin.getPlugin().getConfiguration(); if ( pluginConfiguration instanceof Xpp3Dom ) { Xpp3Dom configDom = (Xpp3Dom) pluginConfiguration; - + if ( configDom.getChild( paramName ) != null ) { throw new IllegalArgumentException( "parameter '" + paramName @@ -1901,7 +1928,7 @@ private void verifyRemovedParameter( String paramName ) } } } - + /** * The package documentation details the * Javadoc Options used by this Plugin. @@ -2046,7 +2073,7 @@ protected void executeReport( Locale unusedLocale ) // ---------------------------------------------------------------------- // MJAVADOC-365 if includes/excludes are specified, these take precedence over the default - // package-based mode and force javadoc into file-based mode unless subpackages are + // package-based mode and force javadoc into file-based mode unless subpackages are // specified. Subpackages take precedence over file-based include/excludes. Why? Because // getFiles(...) returns an empty list when subpackages are specified. boolean includesExcludesActive = @@ -2366,7 +2393,7 @@ private TransformableFilter createDependencyArtifactFilter() */ private SourceResolverConfig getDependencySourceResolverConfig() { - return configureDependencySourceResolution( + return configureDependencySourceResolution( new SourceResolverConfig( project, localRepository, sourceDependencyCacheDir ).withReactorProjects( reactorProjects ) ); } @@ -2656,7 +2683,7 @@ public Artifact resolveDependency( Dependency dependency ) coordinate.setVersion( dependency.getVersion() ); coordinate.setClassifier( dependency.getClassifier() ); coordinate.setExtension( artifactHandlerManager.getArtifactHandler( dependency.getType() ).getExtension() ); - + try { return artifactResolver.resolveArtifact( session.getProjectBuildingRequest(), coordinate ).getArtifact(); @@ -3452,7 +3479,7 @@ private List getArtifactsAbsolutePath( JavadocPathArtifact javadocArtifa * * @param javadocArtifact the {@link JavadocPathArtifact} to resolve * @return a resolved {@link Artifact} - * @throws ArtifactResolverException + * @throws ArtifactResolverException */ private Artifact createAndResolveArtifact( JavadocPathArtifact javadocArtifact ) throws ArtifactResolverException @@ -4718,6 +4745,8 @@ private void addStandardDocletOptions( File javadocOutputDirectory, List addArgIf( arguments, docfilessubdirs, "-docfilessubdirs", SINCE_JAVADOC_1_4 ); + addArgIf( arguments, StringUtils.isNotEmpty( doclint ), "-Xdoclint:" + getDoclint(), SINCE_JAVADOC_1_8 ); + addArgIfNotEmpty( arguments, "-doctitle", JavadocUtil.quotedArgument( getDoctitle() ), false, false ); if ( docfilessubdirs )