【问题标题】:How to skip autogenerated classes from Javadoc using gradle如何使用 gradle 从 Javadoc 跳过自动生成的类
【发布时间】:2021-04-26 18:22:27
【问题描述】:

在一个 Android 库项目中,我使用 Gradle 脚本生成 Javadocs:

task androidJavadocs(type: Exec, dependsOn: buildJavadocsClasspath) {
  doFirst {

    executable = 'javadoc'

    args = [
        '-classpath', javadocsClasspath,
        '-sourcepath', './src/main/java',
        '-subpackages', 'com.example.myproject',
        '-d', javadocsDestinationDir,
        '-exclude', 'com.example.myproject.internal',
        '-doctitle', project.getName() + " " + VERSION_NAME + " API",
        '-windowtitle', POM_NAME + " API",
        '-link', "http://docs.oracle.com/javase/8/docs/api/",
        '-Xdoclint:none',
        '-quiet'
    ]
  }
}

问题在于,在为引用自动生成的类(如 BuildConfig 或 DaggerMyClientComponent)的类生成 javadoc 时,Javadoc 返回警告 (Java 8) 或错误 (Java 11)

./src/main/java/com/example/myproject/MyClient.java:13: error: cannot find symbol
import com.example.myproject.internal.DaggerMyClientComponent;
                                              ^
  symbol:   class DaggerMyClientComponent
  location: package com.example.myproject.internal
./src/main/java/com/example/myproject/internal/storage/client/SdkVersionStorage.java:9: error: cannot find symbol
import com.example.myproject.BuildConfig;
                                     ^
  symbol:   class BuildConfig
  location: package com.example.myproject
./src/main/java/com/example/myproject/internal/utils/UserAgentHeader.java:8: error: cannot find symbol
import com.example.myproject.BuildConfig;
                                     ^
  symbol:   class BuildConfig
  location: package com.example.myproject

我不明白的一件事是,两个错误来自已经使用“exclude”参数从 javadoc 中排除的内部类。

除此之外,我看不到修复或抑制这些错误的选项。添加 com.example.myproject.internal.DaggerMyClientComponent 之类的排除规则不起作用。

使用 Android Studio 生成 Javadocs 不是一个选项,我需要使用可以在 CI (Bitrise) 中使用的脚本。

【问题讨论】:

  • 你有什么运气吗?我正在遭受完全相同的问题。由于排除我的内部包裹而收到错误

标签: android gradle dagger-2 javadoc


【解决方案1】:

你有两种方法解决这个问题:

选项 1

在 javadoc 命令中添加--ignore-source-errors(我从this other answer 中采用了这种方法)

对于那些使用 javadoc gradle 任务的人,他们可以这样添加:

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

选项 2

或者将 BuildConfig.java 文件的路径添加到 sourcepath 中(以备不时之需)

对于使用 javadoc gradle 任务的人,请将其添加到 source 属性中:

source = android.sourceSets.main.java.source + file('build/generated/source/buildConfig/release/your/package/BuildConfig.java').path

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2018-12-20
    • 2023-03-30
    • 2013-03-14
    • 2011-06-08
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2014-10-05
    相关资源
    最近更新 更多