如何使用JDK 11在Android项目中生成javadoc



我的设置:

  • Android Gradle插件3.6.1
  • 6.2.1级
  • JDK 11

我有一个使用JDK8构建Javadoc的工作配置。它看起来是这样的(基于https://www.stkent.com/2016/02/05/adventures-with-javadocs-part-2.html):

tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
from javadoc.destinationDir
archiveClassifier.set('javadoc')
}

正如文章中所评论的,有大量关于类等的警告。当使用JDK11时,这些警告现在都是错误。即使忽略这些错误,我也可以看到javadoc没有正确生成。以前,它包含了所有包/类的HTML,但JDK 11只有一个包含MANIFEST.MF文件的元数据文件夹(包含:"MANIFEST Version:1.0"(

这种行为改变的原因可能是什么

更新:根据评论中的请求,我添加了一个错误类型的示例(正如我所提到的,这种类型的错误在参考文章中,但在JDK8中它们只是警告(:

symbol:   class NonNull
location: package androidx.annotation
/builds/myproject/src/main/java/com/mycompany/package/Bar.java:7: error: package com.mycompany.package does not exist
import com.mycompany.package.Foo;
FAILURE: Build failed with an exception.

在javadoc中添加--ignore-source-errors选项就解决了这个问题。

为此,您应该在javadoc任务中添加以下行:

options.addBooleanOption('-ignore-source-errors', true)

最新更新