我正在调整我公司生产的库的javadoc。我们希望将javadocs排除在那些并非真正意义上用于公共消费的类中(主要是内部使用的类)。
项目使用gradle作为构建系统,并且我已经在build.gradle文件中标记了要排除的包/类。但是,这会导致错误发生。如果排除了某个类的@link,我希望得到一个警告或错误,但是当这些排除的类被简单导入时,它也会抛出错误。有没有办法包括"包括"类/包,但不为它们导出javadoc?
编辑:这里是相关的javadoc任务:
task gendocs(type: Javadoc) {
options.stylesheetFile = new File("./assets/doc_style.css")
String v = "${SEMVER}"
version = v.replace("_", '.')
title = "SweetBlue ${version} API"
options.windowTitle = "SweetBlue"
options.memberLevel = JavadocMemberLevel.PROTECTED
options.author = true
options.linksOffline('http://d.android.com/reference', System.getenv("ANDROID_HOME") + '/docs/reference')
destinationDir = new File("${BUNDLE_FOLDER}/docs/api")
source = sourceSets.main.allJava
classpath += configurations.compile
exclude "com/idevicesinc/sweetblue/backend"
exclude "com/idevicesinc/sweetblue/utils/Utils**.java"
exclude "com/idevicesinc/sweetblue/utils/UpdateLoop.java"
exclude "com/idevicesinc/sweetblue/utils/Pointer.java"
exclude "com/idevicesinc/sweetblue/utils/HistoricalDataQuery.java"
}
编辑2:这是我正在谈论的错误:
SweetBlue/src/com/idevicesinc/sweetblue/BleCharacteristic.java:5: error: cannot find symbol
import com.idevicesinc.sweetblue.utils.Utils;
symbol: class Utils
location: package com.idevicesinc.sweetblue.utils
编辑3:
看来gradle javadoc任务中的exclude与使用javadoc在命令行上使用-exclude不同。我使用CLI javadoc生成运行测试,并且我没有得到使用Gradle时发现的未找到的错误。
答案 0 :(得分:2)
Javadoc需要了解导入的类。告诉javadoc在哪里找到类文件而不是带有classpath的java源代码!
我在XJC生成的代码中遇到了同样的问题,这些代码在ant环境中生成了大量的javadoc错误。 为了将它们从文档中排除但仍满足javadoc,我只是告诉javadoc任务查看bin文件夹:
imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.img1));
答案 1 :(得分:0)
所以问题是您必须告诉Javadoc任务外部导入所在的位置,因此它可以在Javadoc HTML中创建(Hyper)链接。如果您不关心外部类的链接,您可以忽略这些问题:
task gendocs(type: Javadoc) {
failOnError false
...
}
根据Gradle Doc:
指定在Javadoc生成期间遇到错误时此任务是否应该失败。如果为true,则此任务将在Javadoc错误时失败。如果为false,则此任务将忽略Javadoc错误