2015-09-25 129 views
9

我正在调整我公司生产的库的javadocs。我们希望将javadocs从并非真正用于公共消费的类(主要是内部使用的类)中排除。Javadoc排除导致导入错误

该项目使用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任务与使用javadoc在命令行上使用-exclude不同。我使用CLI javadoc生成了一个测试,并且没有发现我在使用Gradle时发现的错误。

+0

如果您没有提供有关发生错误的详细信息,某人如何诊断发生了什么?这可能没有关系,但我怀疑“Utils **。java”模式是否有用。这可能应该只是“Utils * .java”。 –

+0

我用我指的错误更新了OP。我想我之前并不清楚。我对Utils的工作很好(有多个以Utils开头的类)。他们被妥善排除。 –

+0

我没有想法。在Gradle论坛上发布详细的说明。 –

回答

2

Javadoc需要了解导入的类。通过类路径告诉javadoc在哪里可以找到类文件,而不是java源代码!

我在XJC生成的代码中产生了相同的问题,在蚂蚁环境中生成大量的javadoc错误。 为了从文档中排除,但仍满足的javadoc我只是告诉Javadoc任务寻找到bin文件夹:

<target name="javadoc" description="create Javadoc documentation"> 
    <javadoc ...lots of irrelevant attributes skipped...> 
     <fileset dir="src"> 
      <include name="**/*.java"/> 
      <exclude name="my/jaxb/generated/source/*.java"/> 
     </fileset> 
     <classpath> 
      <path refid="myclasspath_to_referenced_libraries"/> 
      <pathelement location="bin"/> 
     </classpath> 
    </javadoc> 
</target> 
0

所以,问题是你要告诉的Javadoc任务,其中外部进口的位置,所以它可以在Javadoc HTML中创建(Hyper)链接到它。如果你不关心链接到外部类,你可以忽略论文问题进行:

task gendocs(type: Javadoc) { 
    failOnError false 
    ... 
} 

按照Gradle Doc:当Javadoc生成期间遇到错误这项任务

指定是否应该失败。如果为true,则此任务将在Javadoc错误时失败。如果为false,则此任务将忽略Javadoc错误