简体   繁体   中英

Right way to exclude R.java from javadoc using gradle

I'm generating javadoc for my Android project with this gradle task:

android.applicationVariants.all { variant ->
    task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
        description "Generates Javadoc for $variant.name."
        source = variant.javaCompile.source
        classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath())
        exclude '**/BuildConfig.java'
        exclude '**/R.java'
        options.links("http://docs.oracle.com/javase/7/docs/api/");
        options.linksOffline("http://d.android.com/reference","${android.sdkDirectory}/docs/reference");
        options {
            failOnError false
        }
        destinationDir = file("${project.projectDir}/javadoc")
    }
}

It excludes R.java , so i don't get R.html in output dir. However, i'm getting very annoying errors cannot find symbol class R in the process of generating doc for my usual java classes, in the line import com.mypackagename.R . I use common android things like R.string.string_res , so i can't remove this import. Is there a proper way to include symbol R to index, but not include it to a javadoc, or, at least, simply to supress this error?

You can try to add next two lines to your code:

classpath += files("build/generated/source/r/${variant.flavorName}/release")
classpath += files("build/generated/source/buildConfig/${variant.flavorName}/release")

But in this case your task should depend on one of the tasks which generates R classes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM