You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2017/07/14 21:25:05 UTC

svn commit: r1801991 - in /maven/plugins/trunk/maven-javadoc-plugin: ./ src/main/java/org/apache/maven/plugins/javadoc/ src/main/java/org/apache/maven/plugins/javadoc/resolver/ src/main/javadoc/org/apache/maven/plugin/ src/main/javadoc/org/apache/maven...

Author: rfscholte
Date: Fri Jul 14 21:25:04 2017
New Revision: 1801991

URL: http://svn.apache.org/viewvc?rev=1801991&view=rev
Log:
[MJAVADOC-456] Upgrade to Maven3 plugin
maven-compat no longer a compile scoped artifact

Added:
    maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/
    maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/javadoc/
    maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/javadoc/package.html
Removed:
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/resolver/ProjectArtifactFilter.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugin/
Modified:
    maven/plugins/trunk/maven-javadoc-plugin/pom.xml
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java

Modified: maven/plugins/trunk/maven-javadoc-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/pom.xml?rev=1801991&r1=1801990&r2=1801991&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/pom.xml Fri Jul 14 21:25:04 2017
@@ -108,6 +108,7 @@ under the License.
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-compat</artifactId>
       <version>${mavenVersion}</version>
+      <scope>test</scope>
     </dependency>
     <!-- maven -->
     <dependency>

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java?rev=1801991&r1=1801990&r2=1801991&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java Fri Jul 14 21:25:04 2017
@@ -59,15 +59,11 @@ import org.apache.commons.lang3.ClassUti
 import org.apache.commons.lang3.JavaVersion;
 import org.apache.commons.lang3.SystemUtils;
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.execution.MavenSession;
@@ -97,7 +93,6 @@ import org.apache.maven.plugins.javadoc.
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.reporting.MavenReportException;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Settings;
@@ -107,6 +102,7 @@ import org.apache.maven.shared.artifact.
 import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;
 import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
 import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
+import org.apache.maven.shared.artifact.resolve.ArtifactResolver;
 import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
 import org.apache.maven.shared.artifact.resolve.ArtifactResult;
 import org.apache.maven.shared.dependencies.DefaultDependableCoordinate;
@@ -308,31 +304,11 @@ public abstract class AbstractJavadocMoj
     @Component
     private ArchiverManager archiverManager;
 
-    /**
-     * Factory for creating artifact objects
-     */
-    @Component
-    private ArtifactFactory factory;
-
-    /**
-     * Used to resolve artifacts of aggregated modules
-     *
-     * @since 2.1
-     */
-    @Component
-    private ArtifactMetadataSource artifactMetadataSource;
-
-    /**
-     * Used for resolving artifacts
-     */
-    @Component
-    private ArtifactResolver resolver;
-
     @Component
     private ResourceResolver resourceResolver;
 
     @Component
-    private org.apache.maven.shared.artifact.resolve.ArtifactResolver artifactResolver;
+    private ArtifactResolver artifactResolver;
 
     @Component
     private ArtifactHandlerManager artifactHandlerManager;
@@ -2428,16 +2404,6 @@ public abstract class AbstractJavadocMoj
         return canGenerate;
     }
 
-    /**
-     * @param result not null
-     * @return the compile artifacts from the result
-     * @see JavadocUtil#getCompileArtifacts(Set, boolean)
-     */
-    protected List<Artifact> getCompileArtifacts( Collection<Artifact> artifacts )
-    {
-        return JavadocUtil.getCompileArtifacts( artifacts, false );
-    }
-
     // ----------------------------------------------------------------------
     // private methods
     // ----------------------------------------------------------------------
@@ -2587,78 +2553,63 @@ public abstract class AbstractJavadocMoj
         {
             classpathElements.addAll( getProjectBuildOutputDirs( project ) );
         }
-
+        
         populateCompileArtifactMap( compileArtifactMap, getProjectArtifacts( project ) );
 
         if ( isAggregator() && project.isExecutionRoot() )
         {
-            List<Artifact> reactorArtifacts = new ArrayList<Artifact>();
+            List<String> reactorArtifacts = new ArrayList<String>();
             for ( MavenProject p : reactorProjects )
             {
-                reactorArtifacts.add( p.getArtifact() );
+                reactorArtifacts.add( p.getGroupId() + ':' + p.getArtifactId() );
             }
-            try
+            
+            TransformableFilter dependencyFilter = new AndFilter( Arrays.asList( 
+                                                                     new PatternExclusionsFilter( reactorArtifacts ),
+                                                                     getDependencyScopeFilter() ) );
+
+            for ( MavenProject subProject : reactorProjects )
             {
-                for ( MavenProject subProject : reactorProjects )
+                if ( subProject != project )
                 {
-                    if ( subProject != project )
-                    {
-                        classpathElements.addAll( getProjectBuildOutputDirs( subProject ) );
+                    classpathElements.addAll( getProjectBuildOutputDirs( subProject ) );
 
-                        Set<Artifact> dependencyArtifacts = subProject.createArtifacts( factory, null, null );
-                        // do not attempt to resolve artifacts of the current reactor which may not exist yet
-                        dependencyArtifacts.removeAll( reactorArtifacts );
-                        if ( !dependencyArtifacts.isEmpty() )
+                    if ( session != null )
+                    {
+                        try
                         {
-                            ArtifactResolutionResult result = null;
-                            try
-                            {
-                                result = resolver.resolveTransitively( dependencyArtifacts, subProject.getArtifact(),
-                                                                       subProject.getManagedVersionMap(),
-                                                                       localRepository,
-                                                                       subProject.getRemoteArtifactRepositories(),
-                                                                       artifactMetadataSource );
-                            }
-                            catch ( ArtifactNotFoundException e )
-                            {
-                                throw new MavenReportException( e.getMessage(), e );
-                            }
-                            catch ( ArtifactResolutionException e )
-                            {
-                                throw new MavenReportException( e.getMessage(), e );
-                            }
+                            StringBuilder sb = new StringBuilder();
 
-                            if ( result == null )
+                            sb.append( "Compiled artifacts for " );
+                            sb.append( subProject.getGroupId() ).append( ":" );
+                            sb.append( subProject.getArtifactId() ).append( ":" );
+                            sb.append( subProject.getVersion() ).append( '\n' );
+
+                            for ( ArtifactResult artifactResult
+                                        : dependencyResolver.resolveDependencies( session.getProjectBuildingRequest(),
+                                                                                  subProject.getDependencies(),
+                                                                                  null,
+                                                                                  dependencyFilter ) )
                             {
-                                continue;
+                                populateCompileArtifactMap( compileArtifactMap,
+                                                            Collections.singletonList( artifactResult.getArtifact() ) );
+                                
+                                sb.append( artifactResult.getArtifact().getFile() ).append( '\n' );
                             }
-
-                            populateCompileArtifactMap( compileArtifactMap,
-                                                        getCompileArtifacts( result.getArtifacts() ) );
-
+                            
                             if ( getLog().isDebugEnabled() )
                             {
-                                StringBuilder sb = new StringBuilder();
-
-                                sb.append( "Compiled artifacts for " );
-                                sb.append( subProject.getGroupId() ).append( ":" );
-                                sb.append( subProject.getArtifactId() ).append( ":" );
-                                sb.append( subProject.getVersion() ).append( '\n' );
-                                for ( Artifact a : compileArtifactMap.values() )
-                                {
-                                    sb.append( a.getFile() ).append( '\n' );
-                                }
-
                                 getLog().debug( sb.toString() );
                             }
+
+                        }
+                        catch ( DependencyResolverException e )
+                        {
+                            throw new MavenReportException( e.getMessage(), e );
                         }
                     }
                 }
             }
-            catch ( InvalidDependencyVersionException e )
-            {
-                throw new MavenReportException( e.getMessage(), e );
-            }
         }
 
         for ( Artifact a : compileArtifactMap.values() )
@@ -2680,6 +2631,11 @@ public abstract class AbstractJavadocMoj
         return StringUtils.join( classpathElements.iterator(), File.pathSeparator );
     }
 
+    protected ScopeFilter getDependencyScopeFilter()
+    {
+        return ScopeFilter.including( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM );
+    }
+
     /**
      * @param dependency {@link Dependency}
      * @return {@link Artifact}
@@ -4594,42 +4550,6 @@ public abstract class AbstractJavadocMoj
     }
 
     /**
-     * This method is checking to see if the artifacts that can't be resolved are all
-     * part of this reactor. This is done to prevent a chicken or egg scenario with
-     * fresh projects. See MJAVADOC-116 for more info.
-     *
-     * @param dependencyArtifacts the sibling projects in the reactor
-     * @param missing             the artifacts that can't be found
-     * @return true if ALL missing artifacts are found in the reactor.
-     */
-    private boolean checkMissingArtifactsInReactor( Collection<Artifact> dependencyArtifacts,
-                                                    Collection<Artifact> missing )
-    {
-        Set<MavenProject> foundInReactor = new HashSet<MavenProject>();
-        for ( Artifact mArtifact : missing )
-        {
-            for ( MavenProject p : reactorProjects )
-            {
-                if ( p.getArtifactId().equals( mArtifact.getArtifactId() ) && p.getGroupId().equals(
-                    mArtifact.getGroupId() ) && p.getVersion().equals( mArtifact.getVersion() ) )
-                {
-                    getLog().warn( "The dependency: [" + p.getId()
-                                       + "] can't be resolved but has been found in the reactor (probably snapshots).\n"
-                                       + "This dependency has been excluded from the Javadoc classpath. "
-                                       + "You should rerun javadoc after executing mvn install." );
-
-                    // found it, move on.
-                    foundInReactor.add( p );
-                    break;
-                }
-            }
-        }
-
-        // if all of them have been found, we can continue.
-        return foundInReactor.size() == missing.size();
-    }
-
-    /**
      * Add Standard Javadoc Options.
      * <br/>
      * The <a href="package-summary.html#Standard_Javadoc_Options">package documentation</a> details the

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java?rev=1801991&r1=1801990&r2=1801991&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java Fri Jul 14 21:25:04 2017
@@ -34,7 +34,6 @@ import org.apache.http.impl.client.Defau
 import org.apache.http.impl.conn.PoolingClientConnectionManager;
 import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.CoreProtocolPNames;
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Proxy;
@@ -83,7 +82,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.NoSuchElementException;
 import java.util.Properties;
-import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
@@ -210,57 +208,6 @@ public class JavadocUtil
     }
 
     /**
-     * Copy from {@link org.apache.maven.project.MavenProject#getCompileArtifacts()}
-     * @param artifacts not null
-     * @return list of compile artifacts with compile scope
-     * @deprecated since 2.5, using {@link #getCompileArtifacts(Set, boolean)} instead of.
-     */
-    protected static List<Artifact> getCompileArtifacts( Set<Artifact> artifacts )
-    {
-        return getCompileArtifacts( artifacts, false );
-    }
-
-    /**
-     * Copy from {@link org.apache.maven.project.MavenProject#getCompileArtifacts()}
-     * @param artifacts not null
-     * @param withTestScope flag to include or not the artifacts with test scope
-     * @return list of compile artifacts with or without test scope.
-     */
-    protected static List<Artifact> getCompileArtifacts( Collection<Artifact> artifacts, boolean withTestScope )
-    {
-        List<Artifact> list = new ArrayList<Artifact>( artifacts.size() );
-
-        for ( Artifact a : artifacts )
-        {
-            // TODO: classpath check doesn't belong here - that's the other method
-            if ( a.getArtifactHandler().isAddedToClasspath() )
-            {
-                // TODO: let the scope handler deal with this
-                if ( withTestScope )
-                {
-                    if ( Artifact.SCOPE_COMPILE.equals( a.getScope() )
-                        || Artifact.SCOPE_PROVIDED.equals( a.getScope() )
-                        || Artifact.SCOPE_SYSTEM.equals( a.getScope() )
-                        || Artifact.SCOPE_TEST.equals( a.getScope() ) )
-                    {
-                        list.add( a );
-                    }
-                }
-                else
-                {
-                    if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() )
-                        || Artifact.SCOPE_SYSTEM.equals( a.getScope() ) )
-                    {
-                        list.add( a );
-                    }
-                }
-            }
-        }
-
-        return list;
-    }
-
-    /**
      * Convenience method to wrap an argument value in single quotes (i.e. <code>'</code>). Intended for values
      * which may contain whitespaces.
      * <br/>
@@ -326,21 +273,6 @@ public class JavadocUtil
     }
 
     /**
-     * Convenience method that copy all <code>doc-files</code> directories from <code>javadocDir</code>
-     * to the <code>outputDirectory</code>.
-     *
-     * @param outputDirectory the output directory
-     * @param javadocDir the javadoc directory
-     * @throws IOException if any
-     * @deprecated since 2.5, using {@link #copyJavadocResources(File, File, String)} instead of.
-     */
-    protected static void copyJavadocResources( File outputDirectory, File javadocDir )
-        throws IOException
-    {
-        copyJavadocResources( outputDirectory, javadocDir, null );
-    }
-
-    /**
      * Convenience method that copy all <code>doc-files</code> directories from <code>javadocDir</code>
      * to the <code>outputDirectory</code>.
      *

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java?rev=1801991&r1=1801990&r2=1801991&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocJar.java Fri Jul 14 21:25:04 2017
@@ -26,11 +26,11 @@ import org.apache.maven.plugins.annotati
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.plugins.javadoc.resolver.SourceResolverConfig;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
@@ -205,9 +205,10 @@ public class TestJavadocJar
     }
 
     @Override
-    protected List<Artifact> getCompileArtifacts( Collection<Artifact> artifacts )
+    protected ScopeFilter getDependencyScopeFilter()
     {
-        return JavadocUtil.getCompileArtifacts( artifacts, true );
+        return ScopeFilter.including( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM,
+                                      Artifact.SCOPE_TEST );
     }
     
     /**

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java?rev=1801991&r1=1801990&r2=1801991&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/TestJavadocReport.java Fri Jul 14 21:25:04 2017
@@ -28,11 +28,11 @@ import org.apache.maven.plugins.annotati
 import org.apache.maven.plugins.javadoc.resolver.SourceResolverConfig;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.MavenReportException;
+import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -310,9 +310,10 @@ public class TestJavadocReport
     }
 
     @Override
-    protected List<Artifact> getCompileArtifacts( Collection<Artifact> artifacts )
+    protected ScopeFilter getDependencyScopeFilter()
     {
-        return JavadocUtil.getCompileArtifacts( artifacts, true );
+        return ScopeFilter.including( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM,
+                                      Artifact.SCOPE_TEST );
     }
 
     /**

Added: maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/javadoc/package.html
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/javadoc/package.html?rev=1801991&view=auto
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/javadoc/package.html (added)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/javadoc/org/apache/maven/plugins/javadoc/package.html Fri Jul 14 21:25:04 2017
@@ -0,0 +1,872 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<HTML>
+  <HEAD>
+    <TITLE>API Overview</TITLE>
+  </HEAD>
+  <BODY>
+    <p>The following tables lists all supported Javadoc options and Standard Doclet options since Javadoc 1.4 in the
+      Maven Javadoc Plugin.</p>
+    <ol>
+      <li>
+        <a href="#Standard_Javadoc_Options">Standard Javadoc Options</a>
+      </li>
+      <li>
+        <a href="#Standard_Doclet_Options">Standard Doclet Options</a>
+      </li>
+      <li>
+        <a href="#Javadoc_References">Javadoc References</a>
+      </li>
+    </ol>
+
+    <h3>
+      <a name="Standard_Javadoc_Options">Standard Javadoc Options</a>
+    </h3>
+
+    <p>The following table is the complete list of the Standard Javadoc Options and its equivalent
+      in the Maven Javadoc Plugin.</p>
+
+    <table class="bodyTable">
+      <tr class="a">
+        <th>
+          <b>Javadoc Options</b>
+        </th>
+        <th>
+          <b>Since Javadoc</b>
+        </th>
+        <th>
+          <b>Maven Javadoc Plugin Options</b>
+        </th>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-1.1</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;old/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-bootclasspath</b>
+          <i> classpathlist</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;bootclasspath/&gt;, &lt;bootclasspathArtifacts/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-classpath</b>
+          <i> classpathlist</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          Auto-discovered
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-breakiterator</b>
+        </td>
+        <td>
+          1.5
+        </td>
+        <td>
+          &lt;breakiterator/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-doclet</b>
+          <i> class</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;doclet/&gt;, &lt;docletArtifact/&gt;,
+            &lt;docletArtifacts/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-docletpath</b>
+          <i> classpathlist</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;docletPath/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-encoding</b>
+          <i> name</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;encoding/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td><b>-exclude</b><i> packagename1</i><b>:</b><i> packagename2</i><b>:</b>... </td>
+        <td>
+          1.5
+        </td>
+        <td>
+          &lt;excludePackageNames/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-extdirs</b>
+          <i> dirlist</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;extdirs/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-help</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          -
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-J</b>
+          <i> flag</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;additionalJOption/&gt;, &lt;maxmemory/&gt;,
+            &lt;minmemory/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-locale</b>
+          <i> language_country_variant</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;locale/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-overview</b>
+          <i> path\filename</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;overview/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-package</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;show/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-private</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;show/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-protected</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;show/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-public</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;show/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-quiet</b>
+        </td>
+        <td>
+          1.5
+        </td>
+        <td>
+          &lt;quiet/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-source</b>
+          <b>1.4</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;source/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-sourcepath</b>
+          <i> sourcepathlist</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;sourcepath/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td><b>-subpackages</b><i> package1</i><b>:</b><i> package2</i><b>:</b>... </td>
+        <td>
+          1.5
+        </td>
+        <td>
+          &lt;subpackages/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-verbose</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;verbose/&gt;
+        </td>
+      </tr>
+    </table>
+
+    <h3>
+      <a name="Standard_Doclet_Options">Standard Doclet Options</a>
+    </h3>
+
+    <p>The following table is the complete list of the Standard Doclet Options and its equivalent in
+      the Maven Javadoc Plugin.</p>
+
+
+    <table class="bodyTable">
+      <tr class="a">
+        <th>
+          <b>Standard Doclet Options</b>
+        </th>
+        <th>
+          <b>Since Javadoc</b>
+        </th>
+        <th>
+          <b>Maven Javadoc Plugin Options</b>
+        </th>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-author</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;author/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-bottom</b>
+          <i> text</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;bottom/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-breakiterator</b>
+        </td>
+        <td>
+          1.4 only
+        </td>
+        <td>
+          &lt;breakiterator/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-charset</b>
+          <i> name</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;charset/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-d</b>
+          <i>directory</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;outputDirectory/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-docencoding</b>
+          <i> name</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;docencoding/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-docfilessubdirs</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;docfilesubdirs/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-doctitle</b>
+          <i> title</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;doctitle/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-exclude</b>
+          <i> packagename1:packagename2:...</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;excludePackageNames/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-excludedocfilessubdir</b>
+          <i> name1:name2...</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;excludedocfilesubdir/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-footer</b>
+          <i> footer</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;footer/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td><b>-group</b><i> groupheading packagepattern:packagepattern:...</i></td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;groups/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-header</b>
+          <i> header</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;header/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-helpfile</b>
+          <i> path\filename</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;helpfile/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-link</b>
+          <i> extdocURL</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;links/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-linkoffline</b>
+          <i> extdocURL packagelistLoc</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;offlinelinks/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-linksource</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;linksource/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-keywords</b>
+        </td>
+        <td>1.4.2</td>
+        <td>
+          &lt;keywords/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-nocomment</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;nocomment/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-nodeprecated</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;nodeprecated/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-nodeprecatedlist</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;nodeprecatedlist/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-nohelp</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;nohelp/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-noindex</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;noindex/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-nonavbar</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;nonavbar/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-noqualifier</b>
+          <i> all | packagename1:packagename2:...</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;noqualifier/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-nosince</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;nosince/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-notimestamp</b>
+        </td>
+        <td>1.5</td>
+        <td>
+          &lt;notimestamp/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-notree</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;notree/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-packagesheader</b>
+        </td>
+        <td>
+          1.4.2
+        </td>
+        <td>
+          &lt;packagesheader/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-quiet</b>
+        </td>
+        <td>
+          1.4 only
+        </td>
+        <td>
+          &lt;quiet/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-serialwarn</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;serialwarn/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-sourcetab</b> (<b>-linksourcetab</b> in 1.4.2)
+        </td>
+        <td>
+          1.5
+        </td>
+        <td>
+          &lt;sourcetab/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-splitindex</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;splitindex/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-stylesheetfile</b>
+          <i> path\filename</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;stylesheetfile/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-subpackages</b>
+          <i> package1:package1:...</i>
+        </td>
+        <td>
+          1.4 only
+        </td>
+        <td>
+          &lt;subpackages/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-tag</b>
+          <i> tagname:Xaoptcmf:&quot;taghead&quot;</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;tags/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-taglet<i> class</i></b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;taglet/&gt;, &lt;tagletArtifact/&gt;,
+            &lt;tagletArtifacts/&gt;, &lt;taglets/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-tagletpath</b>
+          <i> tagletpathlist</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;tagletpath/&gt;, Auto-discovered
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-title</b>
+          <i>title</i>
+          <b>(deprecated)</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          -
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-top</b>
+        </td>
+        <td>
+          6.0
+        </td>
+        <td>
+          &lt;top/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-use</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;use/&gt;
+        </td>
+      </tr>
+      <tr class="a">
+        <td>
+          <b>-version</b>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;version/&gt;
+        </td>
+      </tr>
+      <tr class="b">
+        <td>
+          <b>-windowtitle</b>
+          <i> title</i>
+        </td>
+        <td>
+          1.4
+        </td>
+        <td>
+          &lt;windowtitle/&gt;
+        </td>
+      </tr>
+    </table>
+
+    <h3>
+      <a name="Javadoc_References">Javadoc References</a>
+    </h3>
+
+    <dl>
+      <dt>The Java API Documentation Generator - 1.4</dt>
+      <dd>
+        <a href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html">
+          http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html</a>
+      </dd>
+
+      <dt>The Java API Documentation Generator - 1.5</dt>
+      <dd>
+        <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javadoc.html">
+          http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javadoc.html</a>
+      </dd>
+
+      <dt>The Java API Documentation Generator - 6.0</dt>
+      <dd>
+        <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/javadoc.html">
+          http://java.sun.com/javase/6/docs/technotes/tools/windows/javadoc.html</a>
+      </dd>
+    </dl>
+
+    <p><b>Note</b>: these references are <b>NOT</b> up-to-date! Some options are also specified in the
+    "API Enhancements" section on the Javadoc Technology home page.</p>
+
+    <style type="text/css">
+      <!--
+        table.bodyTable th {
+        color: white;
+        background-color: #bbb;
+        text-align: left;
+        font-weight: bold;
+        }
+
+        table.bodyTable th, table.bodyTable td {
+        }
+
+        table.bodyTable tr.a {
+        background-color: #ddd;
+        }
+
+        table.bodyTable tr.b {
+        background-color: #eee;
+        }
+        table {
+        }
+      -->
+    </style>
+  </BODY>
+</HTML>