4

我正在通过 gradle 使用我的 doclet 运行 javadoc,当我运行我的 javadoc/doclet 任务时,我收到下一个错误:

error - invalid flag: -doctitle

之后,下一个使用表

usage: javadoc [options] [packagenames] [sourcefiles] [@files]
-overview <file>          Read overview documentation from HTML file
-public                   Show only public classes and members
-protected                Show protected/public classes and members (default)
-package                  Show package/protected/public classes and members
-private                  Show all classes and members
-help                     Display command line options and exit
-doclet <class>           Generate output via alternate doclet
-docletpath <path>        Specify where to find doclet class files
-sourcepath <pathlist>    Specify where to find source files
-classpath <pathlist>     Specify where to find user class files
-exclude <pkglist>        Specify a list of packages to exclude
-subpackages <subpkglist> Specify subpackages to recursively load
-breakiterator            Compute 1st sentence with BreakIterator
-bootclasspath <pathlist> Override location of class files loaded
                          by the bootstrap class loader
-source <release>         Provide source compatibility with specified release
-extdirs <dirlist>        Override location of installed extensions
-verbose                  Output messages about what Javadoc is doing
-locale <name>            Locale to be used, e.g. en_US or en_US_WIN
-encoding <name>          Source file encoding name
-quiet                    Do not display status messages
-J<flag>                  Pass <flag> directly to the runtime system

有没有人知道为什么 Javadoc 不接受该标志?理论上,我从 jdk1.6 的 tools.jar 运行 javadoc。我认为 javadoc 总是会接受该 doctitle 选项。感谢您的时间!

编辑:那个 doctitle 选项是标准 Doclet 的一部分,所以看起来我无法访问标准 Doclet 选项。

4

2 回答 2

5

编辑:

知道了!问题出在 Doclet 本身。我没有扩展标准 Doclet(“public class MyDoclet extends Standard {”),因此标准 Doclet 中的标志不可用(并且 doctitle 是标准 Doclet 标志的一部分)。

感谢 Paulo 让我“重新思考”我的回答 :-)

于 2012-06-15T10:20:32.830 回答
2

您可以在 javadoc 任务上将任务局部变量 'title' 设置为空

task javadocTask(type: Javadoc) {
    title = ""
    //Other items like source and options
}

或者,

javadocTask.title = ""

为什么

Gradle 在 javadoc 任务中设置局部变量“title”,然后用于填充 -doctitle 和 -windowtitle 参数。如果它为空,它们将不会填充字段,您可以避免此问题。

有趣的是,标题似乎是由 java 插件填充的,所以如果你从一个没有 java 的项目(比如作为一个聚合器项目)运行 javadoc,你不会遇到这个问题,但是如果你将 javadoc 生成移动到一个你会的java项目。

注意:title = ""两者title = null都适用于最新版本的 gradle。这可能是因为 gradle 两者都知道""并且null是空的。但是,在旧版本的 gradle 上,有报告说使用null 不工作,但一个空字符串可以。

于 2013-10-29T00:12:33.287 回答