使用 javadoc 忽略小错误

2022-09-03 07:03:51

我正在尝试使用javadoc从一两个下载的jar文件中生成文档(当然,在提取所有内容之后,带有源代码)。

但是使用javadoc,即使在Ant文件中,由于愚蠢的事情,我被阻止生成这个,特别是“包XXX不存在”和“找不到符号”......我只是想让javadoc把这些东西(外部引用)的文本放在html文档中,但是记录它找到的所有.java文件......

注意,对于任何感兴趣的人,这是下载页面,其中包含下载文件(包含源代码),我正在尝试从中生成API文档:http://logback.qos.ch/download.html

在 Mark Rotteveel 的帮助下,我的 Ant 构建文件现在如下所示:

<?xml version="1.0" ?>
<project name="document logback core" default="doc">
    <target name="doc">
        <mkdir dir="javadoc" />
        <property name="excludedPackages"
            value="org.codehaus.*,javax.mail.*"/>
        <javadoc destdir="javadoc" sourcepath="src" packagenames="main.*" 
        excludepackagenames="${excludedPackages}"
        additionalparam="-Xdoclint:none" />
    </target>
</project>

...但它仍然给出了错误1)关于找不到包,包括“org.codehaus”。[xxx...]”和“javax.mail.[xxx...]”和2)关于找不到符号(尽管如果我能解决丢失的包错误,这可能会消失)。

注意,据说构建是成功的,但我抱怨没有找到源文件(其中确实有注释.java文件),并且在\javadoc下根本没有生成html。

后来,在Tony Pierce成功生成这些文档之后

已安装Ant 1.9.6,相应地更改了路径,检查以确保这是正在使用的版本...再次尝试。再次失败。这是我输出的结尾:

[javadoc]D:\Desktop\Downloads\logback-1.1.7.tar\logback-1.1.7\logback-core\src\test\java\ch\qos\logback\core\appender\ConsoleAppenderTest.java:32: error: package org.junit 不存在
[javadoc] import static org.junit.Assert.assertEquals;
[javadoc]_______
________________________________

[javadoc] 1 个错误
[javadoc] 100 个

警告 构建成功 总时间:2 秒

它确实创建了javadoc文件夹...但这是空的。

注意上面的“软件包不存在”错误(还有很多其他错误):这个特别令人费解,因为我认为Ant默认以某种方式包含了junit(注意,我是Ant的一个完全新手,只是通过“Ant in Action”工作)。

但。。。使用Ant任务,您可以设置...根据这本书,使蚂蚁自己的被包括在内。遗憾的是,该任务不支持此属性。javacincludeAntRuntime="true"junit.jarjavadoc

后来仍然

老实说,我的想法有点混乱:我发现从第三方源jar编译javadocs的最简单方法是提取然后使用命令行,通常是:

javadoc -d docs -Xmaxwarns 10 -Xmaxerrs 10 -Xdoclint:none -sourcepath .-subpackages ch.qos.logback.core

...至于自己的代码,这似乎不是Gradle的问题(我只是在蚂蚁闪闪发光,意识到未来是Gradle......掌握基础知识并不是特别困难)。javadoc

注意 如果您为 Eclipse 安装 Gradle STS 插件,然后使用 Gradle STS 向导创建一个新项目,则构建文件包含以下行

应用插件: 'eclipse'

...其中一个影响是,默认情况下,源代码以及所有第三方依赖项的可执行文件将在构建期间以GRADLE_HOME下载。相当不错!


答案 1

引入了Java 8,它将某些问题视为错误,而不会生成文档。可以通过指定命令行选项来禁用此功能。doclint-Xdoclint:none

另请参阅: 在 JDK 8 Javadoc 中关闭 doclint

例如,在Ant中,您需要向任务添加属性。Jaybird的一个(稍作修改的)例子:additionalparam="-Xdoclint:none"javadoc

<target name="javadocs" depends="init,set-driver-sources">
    <mkdir dir="${build.docs}"/>
    <javadoc destdir="${build.docs}"
             author="true"
             version="true"
             windowtitle="${Name} API"
             doctitle="${Name}"
             extdirs="${module.thirdparty}"

             additionalparam="-Xdoclint:none"

             excludepackagenames="${excludedPackages}"
             bottom="Copyright &#169; 2001-2015 Jaybird (Firebird JDBC/JCA) team. All rights reserved.">
        <arg line="${java.module.arg}"/>
        <classpath refid="javac.driver.classpath"/>
        <sourcepath>
            <pathelement path="${source.java}"/>
            <pathelement path="${source.jna-client}"/>
        </sourcepath>
        <sourcepath refid="source.java.openoffice"/>
        <sourcepath refid="source.java.additional"/>
        <link href="http://docs.oracle.com/javase/7/docs/api/"/>
    </javadoc>
</target>

答案 2

使用 Java 9 或更高版本的自定义 Doclet 编译错误

这是标准 doclet 的一个选项,不适用于自定义 doclet。-Xdoclint:none

如果您有自定义 doclet 并且不关心编译错误,则可以将该选项传递给命令行工具,或者以编程方式调用 doclet 时传递给。--ignore-source-errorsjavadocjavax.tools.DocumentationTool.getTask(...)

该选项未记录在案。也许是因为它将来可能会被删除。干净的方法是将所有必需的库添加到类路径中(通过实际解决编译错误的选项)。--ignore-source-errors-classpath


推荐