如何使用Java生成javadocs?

7
我正在编写一个Java应用程序,它将让我仅基于文件结构编译Java项目,这样我就可以在没有集成开发环境的情况下编写代码并进行编译。我目前遇到的问题是,我希望在编译时自动生成javadoc文档,但是虽然Java 6提供了JavaCompiler对象来使用,但我找不到使用javadoc命令的方法。
如何使用Java代码为我的项目生成javadoc HTML文档?

1
为什么呢?已经有成熟的Java构建工具可以完成所有这些工作,而且还有更多功能。使用其中一个,避免为自己或接管您代码的人创建巨大的技术债务。 - Stephen C
我肯定会因此受到指责,但是:Ant/Maven/Gradle 都需要编写配置文件。如果您已经创建了一个不需要配置文件的实用程序,那么肯定存在这样的用例 :-) - Rich
5个回答

6

如果您不知道,Apache AntApache Maven都是为了实现类似于您所编写的目标(在没有IDE的情况下进行编译)而存在的工具。

它们都内置了生成javadoc的支持。Ant语法如下:

<!-- publish javadoc -->
<target name="javadoc" description="Creates javadoc for IMP.">
      <delete dir="${web-javadoc}"/>
      <javadoc sourcepath="${source}"
               defaultexcludes="no"
               destdir="${web-javadoc}"
               author="true"
               version="true"
               use="true"
               windowtitle="IMP: Integrated Mechanisms Program"
               overview="${source}/overview.html"
               classpathref="debug.classpath"
               stylesheetfile="${javadoc-theme}/stylesheet.css"
       />

       <copy file="${javadoc-theme}/javadoc.jpg" tofile="${web-javadoc}/javadoc.jpg"/>
</target>

如果你真的想自己生成它,你需要使用Doclet API
import com.sun.javadoc.*;

public class ListClass {
    public static boolean start(RootDoc root) {
        ClassDoc[] classes = root.classes();
        for (int i = 0; i < classes.length; ++i) {
            System.out.println(classes[i]);
        }
        return true;
    }
}

非常透彻。我很感激你给了我答案,即使你认为这是愚蠢的问题。 - Kyle Sletten
1
只是想节省您一些时间,如果那些工具满足您的需求。我并不认为这很愚蠢。 - JohnKlehm

5
在终端中输入javadoc,它会给你一个选项列表。最简单的方法:
javadoc -d your_output_directory -classpath your_classpath -sourcepath your_sourcefile_dir

5
Javadoc工具拥有可编程接口,其中包含公共方法,以便从Java语言编写的其他程序中调用Javadoc工具。这些方法位于lib/tools.jar中的com.sun.tools.javadoc.Main类中。请参考此链接

1

你的回答没有什么实质性问题,只是miku的回答更好一些(而且提前了几分钟),我想确保它在你的回答之前排名靠前。抱歉,下投票是唯一的方法来实现这一点。 - Paŭlo Ebermann
2
@Paŭlo:我明白了。据我理解,这不是downvoting的好用法。Downvotes是用来标记有害或不正确的答案的。 - Ryan Stewart
这是一个极限情况,是的。很抱歉它影响到了你。 - Paŭlo Ebermann

0

有一个 javadoc 命令,它随着 JDK 一起提供(在 Unix 平台上是 man javadoc)

然而,还有更好的方法。你是如何编译代码的?如果你正在使用自动化构建工具,比如 ant 或 maven,你可以添加一个 javadoc 任务来在编译代码时自动生成 javadocs。

http://ant.apache.org/manual/Tasks/javadoc.html

如需了解更多关于Ant(其他工具也有类似功能),请参阅您的工具文档以获取更多信息。

这就是我所做的,它运行得非常出色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接