This is an automated email from the ASF dual-hosted git repository.

rfscholte 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 b78042e  [MJAVADOC-542] Unsupported class file major version 55 
[MJAVADOC-534] Support element-list links from java10 dependencies
b78042e is described below

commit b78042eca643deb9dddb1b0a472345fce28ccb5d
Author: rfscholte <rfscho...@apache.org>
AuthorDate: Sat Nov 24 12:03:34 2018 +0100

    [MJAVADOC-542] Unsupported class file major version 55
    [MJAVADOC-534] Support element-list links from java10 dependencies
---
 Jenkinsfile                                        |   2 +-
 pom.xml                                            |  28 +-
 src/it/projects/MJAVADOC-257/invoker.properties    |   2 +
 src/it/projects/MJAVADOC-427/verify.groovy         |   2 +-
 src/it/projects/MJAVADOC-497/verify.bsh            |  17 +-
 src/it/projects/MJAVADOC-538/pom.xml               |  23 ++
 .../plugins/javadoc/AbstractFixJavadocMojo.java    |   4 +-
 .../maven/plugins/javadoc/AbstractJavadocMojo.java |  98 ++++--
 .../apache/maven/plugins/javadoc/JavadocUtil.java  | 119 ++++---
 .../maven/plugins/javadoc/java-api-element-list-10 | 391 +++++++++++++++++++++
 .../maven/plugins/javadoc/java-api-element-list-11 | 282 +++++++++++++++
 .../javadoc/AggregatorJavadocReportTest.java       |  12 +-
 .../maven/plugins/javadoc/JavadocJarTest.java      |   6 +-
 .../maven/plugins/javadoc/JavadocReportTest.java   | 112 ++++--
 14 files changed, 951 insertions(+), 147 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 8a16e4c..e9f05f7 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-asfMavenTlpPlgnBuild(jdk:['7','8','9'])
+asfMavenTlpPlgnBuild()
diff --git a/pom.xml b/pom.xml
index cd6cc3b..cccd3f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -299,7 +299,7 @@ under the License.
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
-      <version>2.12.0</version>
+      <version>2.23.4</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -329,6 +329,7 @@ under the License.
               <!-- Checksum files cannot contain a license header -->
               <exclude>**/*.sha1</exclude>
               <!-- Javadoc package list files cannot contain a license header 
-->
+              <exclude>**/*element-list*</exclude>
               <exclude>**/*package-list*</exclude>
               <!-- This file is used to patch the generated Javadoc html files 
-->
               
<exclude>src/main/resources/org/apache/maven/plugins/javadoc/frame-injection-fix.txt</exclude>
@@ -343,31 +344,6 @@ under the License.
     </pluginManagement>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>enforce-bytecode-version</id>
-            <configuration>
-              <rules>
-                <enforceBytecodeVersion>
-                  <ignoreClasses>
-                    <ignoreClass>module-info</ignoreClass>
-                  </ignoreClasses>
-                </enforceBytecodeVersion>
-              </rules>
-            </configuration>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>extra-enforcer-rules</artifactId>
-            <version>1.0-beta-6</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
         <executions>
diff --git a/src/it/projects/MJAVADOC-257/invoker.properties 
b/src/it/projects/MJAVADOC-257/invoker.properties
index 08d1d7b..12cb573 100644
--- a/src/it/projects/MJAVADOC-257/invoker.properties
+++ b/src/it/projects/MJAVADOC-257/invoker.properties
@@ -16,3 +16,5 @@
 # under the License.
 
 invoker.goals=clean site
+# there are no new doclettags for plugin-tools
+invoker.java.version=10-
diff --git a/src/it/projects/MJAVADOC-427/verify.groovy 
b/src/it/projects/MJAVADOC-427/verify.groovy
index 8e3c9ab..035c4d6 100644
--- a/src/it/projects/MJAVADOC-427/verify.groovy
+++ b/src/it/projects/MJAVADOC-427/verify.groovy
@@ -23,4 +23,4 @@ assert file.exists()
 
 // assert that javadoc of class correctly contains link, just like method 
details
 assert file.text =~ /Link to slf4j <a 
href=".*?".*?><code>LoggerFactory<\/code><\/a>/
-assert file.text =~ /<pre>public.*?<a 
href=".*?".*?>LoggerFactory<\/a>.*?getLoggerFactory.*?\(\)<\/pre>/
+assert file.text =~ /<pre[^<]*>public.*?<a 
href=".*?".*?>LoggerFactory<\/a>.*?getLoggerFactory.*?\(\)<\/pre>/
diff --git a/src/it/projects/MJAVADOC-497/verify.bsh 
b/src/it/projects/MJAVADOC-497/verify.bsh
index 8f23e77..d90f357 100644
--- a/src/it/projects/MJAVADOC-497/verify.bsh
+++ b/src/it/projects/MJAVADOC-497/verify.bsh
@@ -21,14 +21,25 @@ import java.io.*;
 
 try
 {
-    File packageList = new File( basedir, "target/site/apidocs/package-list" );
-    if ( !packageList.exists() )
+       File list;
+        
+       String javaVersion = System.getProperty( "java.specification.version" );
+       if ( javaVersion.startsWith( "1." ) || javaVersion.equals( "9" ) )
+       {
+           list = new File( basedir, "target/site/apidocs/package-list" );
+       }
+       else
+       {
+               list = new File( basedir, "target/site/apidocs/element-list" );
+       }
+       
+    if ( !list.exists() )
     {
         System.err.println( packageList + " is missing" );
         return false;
     }
 
-    FileReader fr = new FileReader( packageList );
+    FileReader fr = new FileReader( list );
     BufferedReader br = new BufferedReader( fr );
     String line = br.readLine();
     if ( !"com.example.foo".equals( line ) || br.readLine() != null )
diff --git a/src/it/projects/MJAVADOC-538/pom.xml 
b/src/it/projects/MJAVADOC-538/pom.xml
index e7d3ae1..ecac918 100644
--- a/src/it/projects/MJAVADOC-538/pom.xml
+++ b/src/it/projects/MJAVADOC-538/pom.xml
@@ -45,4 +45,27 @@
       </plugins>
     </pluginManagement>
   </build>
+
+  <profiles>
+    <profile>
+      <activation>
+        <jdk>10</jdk>
+      </activation>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-javadoc-plugin</artifactId>
+              <configuration>
+                <additionalOptions>
+                  <option>-html4</option>
+                </additionalOptions>
+              </configuration>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git 
a/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java 
b/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
index 1036095..42bef47 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
@@ -2190,14 +2190,14 @@ public abstract class AbstractFixJavadocMojo
         
         if ( clazz != null )
         {
-            if ( ClassUtils.isAssignable( clazz, RuntimeException.class ) )
+            if ( RuntimeException.class.isAssignableFrom( clazz ) )
             {
                 sb.append( StringUtils.replace( originalJavadocTag, 
exceptionClassName, clazz.getName() ) );
 
                 // added qualified name
                 javaEntityTags.putJavadocThrowsTag( clazz.getName(), 
originalJavadocTag );
             }
-            else if ( ClassUtils.isAssignable( clazz, Throwable.class ) )
+            else if ( Throwable.class.isAssignableFrom( clazz ) )
             {
                 getLog().debug( "Removing '" + originalJavadocTag + "'; 
Throwable not specified by "
                     + getJavaMethodAsString( javaExecutable ) + " and it is 
not a RuntimeException." );
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 5dc3fd6..2f571d6 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -98,10 +98,8 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.io.Writer;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -247,6 +245,10 @@ public abstract class AbstractJavadocMojo
      * Default location for css
      */
     private static final String RESOURCE_CSS_DIR = RESOURCE_DIR + "/css";
+    
+    private static final String PACKAGE_LIST = "package-list";
+    private static final String ELEMENT_LIST = "element-list";
+
 
     /**
      * For Javadoc options appears since Java 1.4.
@@ -1748,6 +1750,8 @@ public abstract class AbstractJavadocMojo
         DEFAULT_JAVA_API_LINKS.put( "api_1.7", 
"https://docs.oracle.com/javase/7/docs/api/"; );
         DEFAULT_JAVA_API_LINKS.put( "api_1.8", 
"https://docs.oracle.com/javase/8/docs/api/"; );
         DEFAULT_JAVA_API_LINKS.put( "api_9",   
"https://docs.oracle.com/javase/9/docs/api/"; );
+        DEFAULT_JAVA_API_LINKS.put( "api_10",  
"https://docs.oracle.com/javase/10/docs/api/"; );
+        DEFAULT_JAVA_API_LINKS.put( "api_11",  
"https://docs.oracle.com/en/java/javase/11/docs/api"; );
     }
 
     // ----------------------------------------------------------------------
@@ -5800,34 +5804,32 @@ public abstract class AbstractJavadocMojo
             return null;
         }
 
-        File javaApiPackageListFile = new File( 
getJavadocOptionsFile().getParentFile(), "package-list" );
+        final Path javaApiListFile;
+        final String resourceName;
+        if ( JavaVersion.parse( apiVersion ).isAtLeast( "10" ) )
+        {
+            javaApiListFile = 
getJavadocOptionsFile().getParentFile().toPath().resolve( "element-list" );
+            resourceName = "java-api-element-list-" + apiVersion;
+        }
+        else
+        {
+            javaApiListFile = 
getJavadocOptionsFile().getParentFile().toPath().resolve( "package-list" );
+            resourceName = "java-api-package-list-" + apiVersion;
+        }
 
         OfflineLink link = new OfflineLink();
-        link.setLocation( 
javaApiPackageListFile.getParentFile().getAbsolutePath() );
+        link.setLocation( 
javaApiListFile.getParent().toAbsolutePath().toString() );
         link.setUrl( javaApiLink );
 
-        InputStream in = null;
-        OutputStream out = null;
-        try
+        try ( InputStream in = this.getClass().getResourceAsStream( 
resourceName ) )
         {
-            in = this.getClass().getResourceAsStream( "java-api-package-list-" 
+ apiVersion );
-            out = new FileOutputStream( javaApiPackageListFile );
-            IOUtil.copy( in, out );
-            out.close();
-            out = null;
-            in.close();
-            in = null;
+            Files.copy( in, javaApiListFile );
         }
         catch ( IOException ioe )
         {
             logError( "Can't get java-api-package-list-" + apiVersion + ": " + 
ioe.getMessage(), ioe );
             return null;
         }
-        finally
-        {
-            IOUtil.close( in );
-            IOUtil.close( out );
-        }
 
         return link;
     }
@@ -5870,12 +5872,15 @@ public abstract class AbstractJavadocMojo
     {
         try
         {
-            URI linkUri;
+            final URI packageListUri;
+            final URI elementListUri;
+            
             if ( link.trim().toLowerCase( Locale.ENGLISH ).startsWith( "http:" 
) || link.trim().toLowerCase(
                 Locale.ENGLISH ).startsWith( "https:" ) || 
link.trim().toLowerCase( Locale.ENGLISH ).startsWith(
                 "ftp:" ) || link.trim().toLowerCase( Locale.ENGLISH 
).startsWith( "file:" ) )
             {
-                linkUri = new URI( link + "/package-list" );
+                packageListUri = new URI( link + '/' + PACKAGE_LIST );
+                elementListUri = new URI( link + '/' + ELEMENT_LIST );
             }
             else
             {
@@ -5896,27 +5901,44 @@ public abstract class AbstractJavadocMojo
                         getLog().error( "The given File link: " + dir + " is 
not a dir." );
                     }
                 }
-                linkUri = new File( dir, "package-list" ).toURI();
+                packageListUri = new File( dir, PACKAGE_LIST ).toURI();
+                elementListUri = new File( dir, ELEMENT_LIST ).toURI();
             }
 
-            if ( !JavadocUtil.isValidPackageList( linkUri.toURL(), settings, 
validateLinks ) )
+            
+            IOException elementListIOException = null;
+            try 
             {
-                if ( getLog().isErrorEnabled() )
+                if ( JavadocUtil.isValidElementList( elementListUri.toURL(), 
settings, validateLinks ) )
                 {
-                    if ( detecting )
-                    {
-                        getLog().warn( "Invalid link: " + link + 
"/package-list. Ignored it." );
-                    }
-                    else
-                    {
-                        getLog().error( "Invalid link: " + link + 
"/package-list. Ignored it." );
-                    }
+                    return true;
                 }
+            }
+            catch ( IOException e ) 
+            {
+                elementListIOException = e;
+            }
+            
+            if ( JavadocUtil.isValidPackageList( packageListUri.toURL(), 
settings, validateLinks ) )
+            {
+                return true;
+            }
 
-                return false;
+            if ( getLog().isErrorEnabled() )
+            {
+                if ( detecting )
+                {
+                    getLog().warn( "Invalid links: "
+                                    + link + " with /" + PACKAGE_LIST + " or / 
" + ELEMENT_LIST + ". Ignored it." );
+                }
+                else
+                {
+                    getLog().error( "Invalid links: " 
+                                    + link + " with /" + PACKAGE_LIST + " or / 
" + ELEMENT_LIST + ". Ignored it." );
+                }
             }
 
-            return true;
+            return false;
         }
         catch ( URISyntaxException e )
         {
@@ -5924,11 +5946,11 @@ public abstract class AbstractJavadocMojo
             {
                 if ( detecting )
                 {
-                    getLog().warn( "Malformed link: " + link + "/package-list. 
Ignored it." );
+                    getLog().warn( "Malformed link: " + e.getInput() + ". 
Ignored it." );
                 }
                 else
                 {
-                    getLog().error( "Malformed link: " + link + 
"/package-list. Ignored it." );
+                    getLog().error( "Malformed link: " + e.getInput() + ". 
Ignored it." );
                 }
             }
             return false;
@@ -5939,11 +5961,11 @@ public abstract class AbstractJavadocMojo
             {
                 if ( detecting )
                 {
-                    getLog().warn( "Error fetching link: " + link + 
"/package-list. Ignored it." );
+                    getLog().warn( "Error fetching link: " + link + ". Ignored 
it." );
                 }
                 else
                 {
-                    getLog().error( "Error fetching link: " + link + 
"/package-list. Ignored it." );
+                    getLog().error( "Error fetching link: " + link + ". 
Ignored it." );
                 }
             }
             return false;
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java 
b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
index 380524e..42ee8cf 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
@@ -1689,74 +1689,107 @@ public class JavadocUtil
             throw new IllegalArgumentException( "The url is null" );
         }
 
-        BufferedReader reader = null;
-        HttpGet httpMethod = null;
-        HttpClient httpClient = null;
-
-        try
+        try ( BufferedReader reader = getReader( url, settings ) )
         {
-            if ( "file".equals( url.getProtocol() ) )
-            {
-                // Intentionally using the platform default encoding here 
since this is what Javadoc uses internally.
-                reader = new BufferedReader( new InputStreamReader( 
url.openStream() ) );
-            }
-            else
+            if ( validateContent )
             {
-                // http, https...
-                httpClient = createHttpClient( settings, url );
-
-                httpMethod = new HttpGet( url.toString() );
-                HttpResponse response;
-                try
-                {
-                    response = httpClient.execute( httpMethod );
-                }
-                catch ( SocketTimeoutException e )
-                {
-                    // could be a sporadic failure, one more retry before we 
give up
-                    response = httpClient.execute( httpMethod );
-                }
-
-                int status = response.getStatusLine().getStatusCode();
-                if ( status != HttpStatus.SC_OK )
+                for ( String line = reader.readLine(); line != null; line = 
reader.readLine() )
                 {
-                    throw new FileNotFoundException( "Unexpected HTTP status 
code " + status + " getting resource "
-                        + url.toExternalForm() + "." );
+                    if ( !isValidPackageName( line ) )
+                    {
+                        return false;
+                    }
                 }
-
-                // Intentionally using the platform default encoding here 
since this is what Javadoc uses internally.
-                reader = new BufferedReader( new InputStreamReader( 
response.getEntity().getContent() ) );
             }
+            return true;
+        }
+    }
+    
+    protected static boolean isValidElementList( URL url, Settings settings, 
boolean validateContent )
+                    throws IOException
+    {
+        if ( url == null )
+        {
+            throw new IllegalArgumentException( "The url is null" );
+        }
 
+        try ( BufferedReader reader = getReader( url, settings ) )
+        {
             if ( validateContent )
             {
                 for ( String line = reader.readLine(); line != null; line = 
reader.readLine() )
                 {
+                    if ( line.startsWith( "module:" ) )
+                    {
+                        continue;
+                    }
+                        
                     if ( !isValidPackageName( line ) )
                     {
                         return false;
                     }
                 }
             }
-
-            reader.close();
-            reader = null;
-
             return true;
         }
-        finally
+    }
+    
+    private static BufferedReader getReader( URL url, Settings settings ) 
throws IOException
+    {
+        BufferedReader reader = null;
+        
+        if ( "file".equals( url.getProtocol() ) )
         {
-            IOUtil.close( reader );
+            // Intentionally using the platform default encoding here since 
this is what Javadoc uses internally.
+            reader = new BufferedReader( new InputStreamReader( 
url.openStream() ) );
+        }
+        else
+        {
+            // http, https...
+            final HttpClient httpClient = createHttpClient( settings, url );
 
-            if ( httpMethod != null )
+            final HttpGet httpMethod = new HttpGet( url.toString() );
+            
+            HttpResponse response;
+            try
             {
-                httpMethod.releaseConnection();
+                response = httpClient.execute( httpMethod );
             }
-            if ( httpClient != null )
+            catch ( SocketTimeoutException e )
             {
-                httpClient.getConnectionManager().shutdown();
+                // could be a sporadic failure, one more retry before we give 
up
+                response = httpClient.execute( httpMethod );
             }
+
+            int status = response.getStatusLine().getStatusCode();
+            if ( status != HttpStatus.SC_OK )
+            {
+                throw new FileNotFoundException( "Unexpected HTTP status code 
" + status + " getting resource "
+                    + url.toExternalForm() + "." );
+            }
+
+            // Intentionally using the platform default encoding here since 
this is what Javadoc uses internally.
+            reader = new BufferedReader( new InputStreamReader( 
response.getEntity().getContent() ) ) 
+            {
+                @Override
+                public void close()
+                    throws IOException
+                {
+                    super.close();
+                    
+                    if ( httpMethod != null )
+                    {
+                        httpMethod.releaseConnection();
+                    }
+                    if ( httpClient != null )
+                    {
+                        httpClient.getConnectionManager().shutdown();
+                    }
+                }
+            };
         }
+        
+        return reader;
     }
 
     private static boolean isValidPackageName( String str )
diff --git 
a/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-10 
b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-10
new file mode 100644
index 0000000..8c46f3d
--- /dev/null
+++ 
b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-10
@@ -0,0 +1,391 @@
+module:java.activation
+javax.activation
+module:java.base
+java.io
+java.lang
+java.lang.annotation
+java.lang.invoke
+java.lang.module
+java.lang.ref
+java.lang.reflect
+java.math
+java.net
+java.net.spi
+java.nio
+java.nio.channels
+java.nio.channels.spi
+java.nio.charset
+java.nio.charset.spi
+java.nio.file
+java.nio.file.attribute
+java.nio.file.spi
+java.security
+java.security.acl
+java.security.cert
+java.security.interfaces
+java.security.spec
+java.text
+java.text.spi
+java.time
+java.time.chrono
+java.time.format
+java.time.temporal
+java.time.zone
+java.util
+java.util.concurrent
+java.util.concurrent.atomic
+java.util.concurrent.locks
+java.util.function
+java.util.jar
+java.util.regex
+java.util.spi
+java.util.stream
+java.util.zip
+javax.crypto
+javax.crypto.interfaces
+javax.crypto.spec
+javax.net
+javax.net.ssl
+javax.security.auth
+javax.security.auth.callback
+javax.security.auth.login
+javax.security.auth.spi
+javax.security.auth.x500
+javax.security.cert
+module:java.compiler
+javax.annotation.processing
+javax.lang.model
+javax.lang.model.element
+javax.lang.model.type
+javax.lang.model.util
+javax.tools
+module:java.corba
+javax.activity
+javax.rmi
+javax.rmi.CORBA
+org.omg.CORBA
+org.omg.CORBA_2_3
+org.omg.CORBA_2_3.portable
+org.omg.CORBA.DynAnyPackage
+org.omg.CORBA.ORBPackage
+org.omg.CORBA.portable
+org.omg.CORBA.TypeCodePackage
+org.omg.CosNaming
+org.omg.CosNaming.NamingContextExtPackage
+org.omg.CosNaming.NamingContextPackage
+org.omg.Dynamic
+org.omg.DynamicAny
+org.omg.DynamicAny.DynAnyFactoryPackage
+org.omg.DynamicAny.DynAnyPackage
+org.omg.IOP
+org.omg.IOP.CodecFactoryPackage
+org.omg.IOP.CodecPackage
+org.omg.Messaging
+org.omg.PortableInterceptor
+org.omg.PortableInterceptor.ORBInitInfoPackage
+org.omg.PortableServer
+org.omg.PortableServer.CurrentPackage
+org.omg.PortableServer.POAManagerPackage
+org.omg.PortableServer.POAPackage
+org.omg.PortableServer.portable
+org.omg.PortableServer.ServantLocatorPackage
+org.omg.SendingContext
+org.omg.stub.java.rmi
+module:java.datatransfer
+java.awt.datatransfer
+module:java.desktop
+java.applet
+java.awt
+java.awt.color
+java.awt.desktop
+java.awt.dnd
+java.awt.event
+java.awt.font
+java.awt.geom
+java.awt.im
+java.awt.im.spi
+java.awt.image
+java.awt.image.renderable
+java.awt.print
+java.beans
+java.beans.beancontext
+javax.accessibility
+javax.imageio
+javax.imageio.event
+javax.imageio.metadata
+javax.imageio.plugins.bmp
+javax.imageio.plugins.jpeg
+javax.imageio.plugins.tiff
+javax.imageio.spi
+javax.imageio.stream
+javax.print
+javax.print.attribute
+javax.print.attribute.standard
+javax.print.event
+javax.sound.midi
+javax.sound.midi.spi
+javax.sound.sampled
+javax.sound.sampled.spi
+javax.swing
+javax.swing.border
+javax.swing.colorchooser
+javax.swing.event
+javax.swing.filechooser
+javax.swing.plaf
+javax.swing.plaf.basic
+javax.swing.plaf.metal
+javax.swing.plaf.multi
+javax.swing.plaf.nimbus
+javax.swing.plaf.synth
+javax.swing.table
+javax.swing.text
+javax.swing.text.html
+javax.swing.text.html.parser
+javax.swing.text.rtf
+javax.swing.tree
+javax.swing.undo
+module:java.instrument
+java.lang.instrument
+module:java.jnlp
+javax.jnlp
+module:java.logging
+java.util.logging
+module:java.management
+java.lang.management
+javax.management
+javax.management.loading
+javax.management.modelmbean
+javax.management.monitor
+javax.management.openmbean
+javax.management.relation
+javax.management.remote
+javax.management.timer
+module:java.management.rmi
+javax.management.remote.rmi
+module:java.naming
+javax.naming
+javax.naming.directory
+javax.naming.event
+javax.naming.ldap
+javax.naming.spi
+module:java.prefs
+java.util.prefs
+module:java.rmi
+java.rmi
+java.rmi.activation
+java.rmi.dgc
+java.rmi.registry
+java.rmi.server
+javax.rmi.ssl
+module:java.scripting
+javax.script
+module:java.se
+module:java.se.ee
+module:java.security.jgss
+javax.security.auth.kerberos
+org.ietf.jgss
+module:java.security.sasl
+javax.security.sasl
+module:java.smartcardio
+javax.smartcardio
+module:java.sql
+java.sql
+javax.sql
+javax.transaction.xa
+module:java.sql.rowset
+javax.sql.rowset
+javax.sql.rowset.serial
+javax.sql.rowset.spi
+module:java.transaction
+javax.transaction
+module:java.xml
+javax.xml
+javax.xml.catalog
+javax.xml.datatype
+javax.xml.namespace
+javax.xml.parsers
+javax.xml.stream
+javax.xml.stream.events
+javax.xml.stream.util
+javax.xml.transform
+javax.xml.transform.dom
+javax.xml.transform.sax
+javax.xml.transform.stax
+javax.xml.transform.stream
+javax.xml.validation
+javax.xml.xpath
+org.w3c.dom
+org.w3c.dom.bootstrap
+org.w3c.dom.events
+org.w3c.dom.ls
+org.w3c.dom.ranges
+org.w3c.dom.traversal
+org.w3c.dom.views
+org.xml.sax
+org.xml.sax.ext
+org.xml.sax.helpers
+module:java.xml.bind
+javax.xml.bind
+javax.xml.bind.annotation
+javax.xml.bind.annotation.adapters
+javax.xml.bind.attachment
+javax.xml.bind.helpers
+javax.xml.bind.util
+module:java.xml.crypto
+javax.xml.crypto
+javax.xml.crypto.dom
+javax.xml.crypto.dsig
+javax.xml.crypto.dsig.dom
+javax.xml.crypto.dsig.keyinfo
+javax.xml.crypto.dsig.spec
+module:java.xml.ws
+javax.jws
+javax.jws.soap
+javax.xml.soap
+javax.xml.ws
+javax.xml.ws.handler
+javax.xml.ws.handler.soap
+javax.xml.ws.http
+javax.xml.ws.soap
+javax.xml.ws.spi
+javax.xml.ws.spi.http
+javax.xml.ws.wsaddressing
+module:java.xml.ws.annotation
+javax.annotation
+module:javafx.base
+javafx.beans
+javafx.beans.binding
+javafx.beans.property
+javafx.beans.property.adapter
+javafx.beans.value
+javafx.collections
+javafx.collections.transformation
+javafx.event
+javafx.util
+javafx.util.converter
+module:javafx.controls
+javafx.scene.chart
+javafx.scene.control
+javafx.scene.control.cell
+javafx.scene.control.skin
+module:javafx.fxml
+javafx.fxml
+module:javafx.graphics
+javafx.animation
+javafx.application
+javafx.concurrent
+javafx.css
+javafx.css.converter
+javafx.geometry
+javafx.print
+javafx.scene
+javafx.scene.canvas
+javafx.scene.effect
+javafx.scene.image
+javafx.scene.input
+javafx.scene.layout
+javafx.scene.paint
+javafx.scene.shape
+javafx.scene.text
+javafx.scene.transform
+javafx.stage
+module:javafx.media
+javafx.scene.media
+module:javafx.swing
+javafx.embed.swing
+module:javafx.web
+javafx.scene.web
+module:jdk.accessibility
+com.sun.java.accessibility.util
+module:jdk.attach
+com.sun.tools.attach
+com.sun.tools.attach.spi
+module:jdk.charsets
+module:jdk.compiler
+com.sun.source.doctree
+com.sun.source.tree
+com.sun.source.util
+com.sun.tools.javac
+module:jdk.crypto.cryptoki
+module:jdk.crypto.ec
+module:jdk.dynalink
+jdk.dynalink
+jdk.dynalink.beans
+jdk.dynalink.linker
+jdk.dynalink.linker.support
+jdk.dynalink.support
+module:jdk.editpad
+module:jdk.hotspot.agent
+module:jdk.httpserver
+com.sun.net.httpserver
+com.sun.net.httpserver.spi
+module:jdk.incubator.httpclient
+jdk.incubator.http
+module:jdk.jartool
+com.sun.jarsigner
+jdk.security.jarsigner
+module:jdk.javadoc
+com.sun.javadoc
+com.sun.tools.javadoc
+jdk.javadoc.doclet
+module:jdk.jcmd
+module:jdk.jconsole
+com.sun.tools.jconsole
+module:jdk.jdeps
+module:jdk.jdi
+com.sun.jdi
+com.sun.jdi.connect
+com.sun.jdi.connect.spi
+com.sun.jdi.event
+com.sun.jdi.request
+module:jdk.jdwp.agent
+module:jdk.jfr
+jdk.jfr
+jdk.jfr.consumer
+module:jdk.jlink
+module:jdk.jshell
+jdk.jshell
+jdk.jshell.execution
+jdk.jshell.spi
+jdk.jshell.tool
+module:jdk.jsobject
+netscape.javascript
+module:jdk.jstatd
+module:jdk.localedata
+module:jdk.management
+com.sun.management
+module:jdk.management.agent
+module:jdk.management.cmm
+jdk.management.cmm
+module:jdk.management.jfr
+jdk.management.jfr
+module:jdk.management.resource
+jdk.management.resource
+module:jdk.naming.dns
+module:jdk.naming.rmi
+module:jdk.net
+jdk.net
+module:jdk.pack
+module:jdk.packager.services
+jdk.packager.services
+jdk.packager.services.singleton
+module:jdk.rmic
+module:jdk.scripting.nashorn
+jdk.nashorn.api.scripting
+jdk.nashorn.api.tree
+module:jdk.sctp
+com.sun.nio.sctp
+module:jdk.security.auth
+com.sun.security.auth
+com.sun.security.auth.callback
+com.sun.security.auth.login
+com.sun.security.auth.module
+module:jdk.security.jgss
+com.sun.security.jgss
+module:jdk.snmp
+module:jdk.xml.dom
+org.w3c.dom.css
+org.w3c.dom.html
+org.w3c.dom.stylesheets
+org.w3c.dom.xpath
+module:jdk.zipfs
\ No newline at end of file
diff --git 
a/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11 
b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11
new file mode 100644
index 0000000..bfb4f01
--- /dev/null
+++ 
b/src/main/resources/org/apache/maven/plugins/javadoc/java-api-element-list-11
@@ -0,0 +1,282 @@
+module:java.base
+java.io
+java.lang
+java.lang.annotation
+java.lang.invoke
+java.lang.module
+java.lang.ref
+java.lang.reflect
+java.math
+java.net
+java.net.spi
+java.nio
+java.nio.channels
+java.nio.channels.spi
+java.nio.charset
+java.nio.charset.spi
+java.nio.file
+java.nio.file.attribute
+java.nio.file.spi
+java.security
+java.security.acl
+java.security.cert
+java.security.interfaces
+java.security.spec
+java.text
+java.text.spi
+java.time
+java.time.chrono
+java.time.format
+java.time.temporal
+java.time.zone
+java.util
+java.util.concurrent
+java.util.concurrent.atomic
+java.util.concurrent.locks
+java.util.function
+java.util.jar
+java.util.regex
+java.util.spi
+java.util.stream
+java.util.zip
+javax.crypto
+javax.crypto.interfaces
+javax.crypto.spec
+javax.net
+javax.net.ssl
+javax.security.auth
+javax.security.auth.callback
+javax.security.auth.login
+javax.security.auth.spi
+javax.security.auth.x500
+javax.security.cert
+module:java.compiler
+javax.annotation.processing
+javax.lang.model
+javax.lang.model.element
+javax.lang.model.type
+javax.lang.model.util
+javax.tools
+module:java.datatransfer
+java.awt.datatransfer
+module:java.desktop
+java.applet
+java.awt
+java.awt.color
+java.awt.desktop
+java.awt.dnd
+java.awt.event
+java.awt.font
+java.awt.geom
+java.awt.im
+java.awt.im.spi
+java.awt.image
+java.awt.image.renderable
+java.awt.print
+java.beans
+java.beans.beancontext
+javax.accessibility
+javax.imageio
+javax.imageio.event
+javax.imageio.metadata
+javax.imageio.plugins.bmp
+javax.imageio.plugins.jpeg
+javax.imageio.plugins.tiff
+javax.imageio.spi
+javax.imageio.stream
+javax.print
+javax.print.attribute
+javax.print.attribute.standard
+javax.print.event
+javax.sound.midi
+javax.sound.midi.spi
+javax.sound.sampled
+javax.sound.sampled.spi
+javax.swing
+javax.swing.border
+javax.swing.colorchooser
+javax.swing.event
+javax.swing.filechooser
+javax.swing.plaf
+javax.swing.plaf.basic
+javax.swing.plaf.metal
+javax.swing.plaf.multi
+javax.swing.plaf.nimbus
+javax.swing.plaf.synth
+javax.swing.table
+javax.swing.text
+javax.swing.text.html
+javax.swing.text.html.parser
+javax.swing.text.rtf
+javax.swing.tree
+javax.swing.undo
+module:java.instrument
+java.lang.instrument
+module:java.logging
+java.util.logging
+module:java.management
+java.lang.management
+javax.management
+javax.management.loading
+javax.management.modelmbean
+javax.management.monitor
+javax.management.openmbean
+javax.management.relation
+javax.management.remote
+javax.management.timer
+module:java.management.rmi
+javax.management.remote.rmi
+module:java.naming
+javax.naming
+javax.naming.directory
+javax.naming.event
+javax.naming.ldap
+javax.naming.spi
+module:java.net.http
+java.net.http
+module:java.prefs
+java.util.prefs
+module:java.rmi
+java.rmi
+java.rmi.activation
+java.rmi.dgc
+java.rmi.registry
+java.rmi.server
+javax.rmi.ssl
+module:java.scripting
+javax.script
+module:java.se
+module:java.security.jgss
+javax.security.auth.kerberos
+org.ietf.jgss
+module:java.security.sasl
+javax.security.sasl
+module:java.smartcardio
+javax.smartcardio
+module:java.sql
+java.sql
+javax.sql
+module:java.sql.rowset
+javax.sql.rowset
+javax.sql.rowset.serial
+javax.sql.rowset.spi
+module:java.transaction.xa
+javax.transaction.xa
+module:java.xml
+javax.xml
+javax.xml.catalog
+javax.xml.datatype
+javax.xml.namespace
+javax.xml.parsers
+javax.xml.stream
+javax.xml.stream.events
+javax.xml.stream.util
+javax.xml.transform
+javax.xml.transform.dom
+javax.xml.transform.sax
+javax.xml.transform.stax
+javax.xml.transform.stream
+javax.xml.validation
+javax.xml.xpath
+org.w3c.dom
+org.w3c.dom.bootstrap
+org.w3c.dom.events
+org.w3c.dom.ls
+org.w3c.dom.ranges
+org.w3c.dom.traversal
+org.w3c.dom.views
+org.xml.sax
+org.xml.sax.ext
+org.xml.sax.helpers
+module:java.xml.crypto
+javax.xml.crypto
+javax.xml.crypto.dom
+javax.xml.crypto.dsig
+javax.xml.crypto.dsig.dom
+javax.xml.crypto.dsig.keyinfo
+javax.xml.crypto.dsig.spec
+module:jdk.accessibility
+com.sun.java.accessibility.util
+module:jdk.attach
+com.sun.tools.attach
+com.sun.tools.attach.spi
+module:jdk.charsets
+module:jdk.compiler
+com.sun.source.doctree
+com.sun.source.tree
+com.sun.source.util
+com.sun.tools.javac
+module:jdk.crypto.cryptoki
+module:jdk.crypto.ec
+module:jdk.dynalink
+jdk.dynalink
+jdk.dynalink.beans
+jdk.dynalink.linker
+jdk.dynalink.linker.support
+jdk.dynalink.support
+module:jdk.editpad
+module:jdk.hotspot.agent
+module:jdk.httpserver
+com.sun.net.httpserver
+com.sun.net.httpserver.spi
+module:jdk.jartool
+com.sun.jarsigner
+jdk.security.jarsigner
+module:jdk.javadoc
+com.sun.javadoc
+com.sun.tools.javadoc
+jdk.javadoc.doclet
+module:jdk.jcmd
+module:jdk.jconsole
+com.sun.tools.jconsole
+module:jdk.jdeps
+module:jdk.jdi
+com.sun.jdi
+com.sun.jdi.connect
+com.sun.jdi.connect.spi
+com.sun.jdi.event
+com.sun.jdi.request
+module:jdk.jdwp.agent
+module:jdk.jfr
+jdk.jfr
+jdk.jfr.consumer
+module:jdk.jlink
+module:jdk.jshell
+jdk.jshell
+jdk.jshell.execution
+jdk.jshell.spi
+jdk.jshell.tool
+module:jdk.jsobject
+netscape.javascript
+module:jdk.jstatd
+module:jdk.localedata
+module:jdk.management
+com.sun.management
+module:jdk.management.agent
+module:jdk.management.jfr
+jdk.management.jfr
+module:jdk.naming.dns
+module:jdk.naming.rmi
+module:jdk.net
+jdk.net
+jdk.nio
+module:jdk.pack
+module:jdk.rmic
+module:jdk.scripting.nashorn
+jdk.nashorn.api.scripting
+jdk.nashorn.api.tree
+module:jdk.sctp
+com.sun.nio.sctp
+module:jdk.security.auth
+com.sun.security.auth
+com.sun.security.auth.callback
+com.sun.security.auth.login
+com.sun.security.auth.module
+module:jdk.security.jgss
+com.sun.security.jgss
+module:jdk.xml.dom
+org.w3c.dom.css
+org.w3c.dom.html
+org.w3c.dom.stylesheets
+org.w3c.dom.xpath
+module:jdk.zipfs
\ No newline at end of file
diff --git 
a/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java
 
b/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java
index 706b26e..1bfad67 100644
--- 
a/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java
+++ 
b/src/test/java/org/apache/maven/plugins/javadoc/AggregatorJavadocReportTest.java
@@ -31,6 +31,7 @@ import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.languages.java.version.JavaVersion;
 import org.codehaus.plexus.util.FileUtils;
 import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
 import org.sonatype.aether.util.DefaultRepositorySystemSession;
@@ -231,7 +232,16 @@ public class AggregatorJavadocReportTest
         File apidocs = new File( getBasedir(), 
"target/test/unit/aggregate-resources-test/target/site/apidocs" );
 
         // Test overview
-        File overviewSummary = new File( apidocs, "overview-summary.html" );
+        File overviewSummary;
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isBefore( "11" ) )
+        {
+            overviewSummary = new File( apidocs, "overview-summary.html" );
+        }
+        else
+        {
+            overviewSummary = new File( apidocs, "index.html" );
+        }
+        
         assertTrue( overviewSummary.exists() );
         String overview = readFile( overviewSummary ).toLowerCase();
         assertTrue( overview.contains( "<a 
href=\"resources/test/package-summary.html\">resources.test</a>" ) );
diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java 
b/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java
index 18e71cc..16d7a4e 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java
@@ -112,7 +112,11 @@ public class JavadocJarTest
         assertTrue( set.contains( "javadocjar/def/package-use.html" ) );
         assertTrue( set.contains( "javadocjar/def/package-tree.html" ) );
         assertTrue( set.contains( "javadocjar/def/package-summary.html" ) );
-        assertTrue( set.contains( "javadocjar/def/package-frame.html" ) );
+        // package frame not generated anymore since Java 11
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isBefore( "11" ) )
+        {
+            assertTrue( set.contains( "javadocjar/def/package-frame.html" ) );
+        }
         assertTrue( set.contains( "javadocjar/def/class-use/AppSample.html" ) 
);
         assertTrue( set.contains( "index.html" ) );
         assertTrue( set.contains( "javadocjar/def/App.html" ) );
diff --git 
a/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java 
b/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java
index f21e063..c4d66b9 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocReportTest.java
@@ -22,13 +22,13 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -193,21 +193,12 @@ public class JavadocReportTest
     private static String readFile( File file )
         throws IOException
     {
-        String strTmp;
         StringBuilder str = new StringBuilder( (int) file.length() );
-        BufferedReader in = new BufferedReader( new FileReader( file ) );
 
-        try
+        for ( String strTmp : Files.readAllLines( file.toPath(), 
StandardCharsets.UTF_8 ) )
         {
-            while ( ( strTmp = in.readLine() ) != null )
-            {
-                str.append( LINE_SEPARATOR );
-                str.append( strTmp );
-            }
-        }
-        finally
-        {
-            in.close();
+            str.append( LINE_SEPARATOR);
+            str.append( strTmp );
         }
 
         return str.toString();
@@ -241,26 +232,39 @@ public class JavadocReportTest
         }
 
         assertTrue( new File( apidocs, "def/configuration/AppSample.html" 
).exists() );
-        assertTrue( new File( apidocs, "def/configuration/package-frame.html" 
).exists() );
         assertTrue( new File( apidocs, 
"def/configuration/package-summary.html" ).exists() );
         assertTrue( new File( apidocs, "def/configuration/package-tree.html" 
).exists() );
         assertTrue( new File( apidocs, "def/configuration/package-use.html" 
).exists() );
 
+        // package-frame and allclasses-(no)frame not generated anymore since 
Java 11
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isBefore( "11" ) )
+        {
+            assertTrue( new File( apidocs, 
"def/configuration/package-frame.html" ).exists() );
+            assertTrue( new File( apidocs, "allclasses-frame.html" ).exists() 
);
+            assertTrue( new File( apidocs, "allclasses-noframe.html" 
).exists() );
+        }
+        
         // class level generated javadoc files
         assertTrue( new File( apidocs, "def/configuration/class-use/App.html" 
).exists() );
         assertTrue( new File( apidocs, 
"def/configuration/class-use/AppSample.html" ).exists() );
 
         // project level generated javadoc files
-        assertTrue( new File( apidocs, "allclasses-frame.html" ).exists() );
-        assertTrue( new File( apidocs, "allclasses-noframe.html" ).exists() );
         assertTrue( new File( apidocs, "constant-values.html" ).exists() );
         assertTrue( new File( apidocs, "deprecated-list.html" ).exists() );
         assertTrue( new File( apidocs, "help-doc.html" ).exists() );
         assertTrue( new File( apidocs, "index-all.html" ).exists() );
         assertTrue( new File( apidocs, "index.html" ).exists() );
         assertTrue( new File( apidocs, "overview-tree.html" ).exists() );
-        assertTrue( new File( apidocs, "package-list" ).exists() );
         assertTrue( new File( apidocs, "stylesheet.css" ).exists() );
+
+        if ( JavaVersion.JAVA_VERSION.isAtLeast( "10" ) )
+        {
+            assertTrue( new File( apidocs, "element-list" ).exists() );
+        }
+        else 
+        {
+            assertTrue( new File( apidocs, "package-list" ).exists() );
+        }
     }
 
     /**
@@ -314,8 +318,8 @@ public class JavadocReportTest
         throws Exception
     {
         // Should be an assumption, but not supported by TestCase
-        // Seems like a bug in Javadoc 9
-        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.compareTo( 
JavaVersion.parse( "9" ) ) == 0 )
+        // Seems like a bug in Javadoc 9 and above
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isAtLeast( "9" ) )
         {
             return;
         }
@@ -495,8 +499,16 @@ public class JavadocReportTest
         assertTrue( new File( apidocs, "index-all.html" ).exists() );
         assertTrue( new File( apidocs, "index.html" ).exists() );
         assertTrue( new File( apidocs, "overview-tree.html" ).exists() );
-        assertTrue( new File( apidocs, "package-list" ).exists() );
         assertTrue( new File( apidocs, "stylesheet.css" ).exists() );
+
+        if ( JavaVersion.JAVA_VERSION.isBefore( "10" ) )
+        {
+            assertTrue( new File( apidocs, "package-list" ).exists() );
+        }
+        else
+        {
+            assertTrue( new File( apidocs, "element-list" ).exists() );
+        }
     }
 
     /**
@@ -539,7 +551,15 @@ public class JavadocReportTest
         // 
----------------------------------------------------------------------
         // taglet-test: check if a taglet is used
         // 
----------------------------------------------------------------------
-
+        
+        // Should be an assumption, but not supported by TestCase
+        // com.sun.tools.doclets.Taglet not supported by Java9 anymore
+        // Should be refactored with jdk.javadoc.doclet.Taglet
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isAtLeast( "10" ) )
+        {
+            return;
+        }
+        
         File testPom = new File( unit, 
"taglet-test/taglet-test-plugin-config.xml" );
         JavadocReport mojo = lookupMojo( testPom );
         
@@ -661,7 +681,7 @@ public class JavadocReportTest
         assertTrue( content.contains( "<img 
src=\"doc-files/maven-feather.png\" alt=\"Maven\">" ) );
 
         JavaVersion javadocVersion = (JavaVersion) getVariableValueFromObject( 
mojo, "javadocRuntimeVersion" );
-        if( javadocVersion.isAtLeast( "1.8" ) && javadocVersion.isBefore( "10" 
) )
+        if( javadocVersion.isAtLeast( "1.8" ) && javadocVersion.isBefore( "12" 
) )
         {
             // https://bugs.openjdk.java.net/browse/JDK-8032205
             assertTrue( "Javadoc runtime version: " + javadocVersion
@@ -713,9 +733,15 @@ public class JavadocReportTest
         String readed = readFile( app );
         assertTrue( readed.contains( ">To do something:</" ) );
         assertTrue( readed.contains( ">Generator Class:</" ) );
-        assertTrue( readed.contains( ">Version:</" ) );
-        assertTrue( readed.toLowerCase().contains( "</dt>" + LINE_SEPARATOR + 
"  <dd>1.0</dd>" )
-            || readed.toLowerCase().contains( "</dt>" + LINE_SEPARATOR + 
"<dd>1.0</dd>" /* JDK 8 */) );
+        
+        // In javadoc-options-javadoc-resources.xml tag 'version' has only a 
name, 
+        // which is not enough for Java 11 anymore
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isBefore( "11" ) )
+        {
+            assertTrue( readed.contains( ">Version:</" ) );
+            assertTrue( readed.toLowerCase().contains( "</dt>" + 
LINE_SEPARATOR + "  <dd>1.0</dd>" )
+                || readed.toLowerCase().contains( "</dt>" + LINE_SEPARATOR + 
"<dd>1.0</dd>" /* JDK 8 */) );
+        }
     }
 
     /**
@@ -775,12 +801,20 @@ public class JavadocReportTest
         mojo.execute();
 
         File apidocs = new File( getBasedir(), 
"target/test/unit/jdk6-test/target/site/apidocs" );
-
         assertTrue( new File( apidocs, "index.html" ).exists() );
 
-        File overviewSummary = new File( apidocs, "overview-summary.html" );
-        assertTrue( overviewSummary.exists() );
-        String content = readFile( overviewSummary );
+        File overview;
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isBefore( "11" ) )
+        {
+            overview = new File( apidocs, "overview-summary.html" );    
+        }
+        else
+        {
+            overview = new File( apidocs, "index.html" );
+        }
+        
+        assertTrue( overview.exists() );
+        String content = readFile( overview );
         assertTrue( content.contains( "Top - Copyright &#169; All rights 
reserved." ) );
         assertTrue( content.contains( "Header - Copyright &#169; All rights 
reserved." ) );
         assertTrue( content.contains( "Footer - Copyright &#169; All rights 
reserved." ) );
@@ -1020,6 +1054,13 @@ public class JavadocReportTest
     public void testTagletArtifacts()
         throws Exception
     {
+        // Should be an assumption, but not supported by TestCase
+        // com.sun.tools.doclets.Taglet not supported by Java 10 anymore
+        if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isAtLeast( "10" ) )
+        {
+            return;
+        }
+        
         File testPom = new File( unit, 
"tagletArtifacts-test/tagletArtifacts-test-plugin-config.xml" );
         JavadocReport mojo = lookupMojo( testPom );
 
@@ -1112,7 +1153,16 @@ public class JavadocReportTest
         mojo.execute();
 
         String content = readFile( stylesheetfile );
-        assertTrue( content.contains( "/* Javadoc style sheet */" ) );
+        if ( JavaVersion.JAVA_VERSION.isAtLeast( "10" ) )
+        {
+            assertTrue( content.contains( "/* " + LINE_SEPARATOR
+                                        + " * Javadoc style sheet" + 
LINE_SEPARATOR
+                                        + " */" ) );
+        }
+        else
+        {
+            assertTrue( content.contains( "/* Javadoc style sheet */" ) );
+        }
 
         String optionsContent = readFile( options );
         assertFalse( optionsContent.contains( "-stylesheetfile" ) );

Reply via email to