确定 javadoc 是否遇到任何错误或警告

determining whether javadoc encountered any errors or warnings

我想确定我们从 makefile 发出的 javadoc 命令是否遇到任何错误或警告。目前,我可以看到由于 import 语句不在我们指定给 javadoc 的类路径上(但应该在),我们遇到了错误。我最终想修复我们的 javadoc 调用和内容,然后将其锁定,以便 makefile 捕获任何错误或警告并停止构建。但是,据我所知,文档没有提到 javadoc 命令中的任何 return 代码值。请注意,我们在 GNU makefile 中使用来自命令的 Java 7 和 运行 javadoc,而不是来自 Ant 或 Maven。你建议我做什么?

更新:我的命令如下所示:

<path1>/javadoc -overview <path2>/overview.html -sourcepath <path3> <file1> <file2> <dir1> <dir2> -d <output_dir>

我在该调用中看不到任何会导致错误被视为警告的内容。

这是输出中的一个片段,显示了我看到的 error/warning 条消息:

....
Constructing Javadoc information...
../../../<path>/<filename>.java:5: error: package javax.servlet.http does not exist
import javax.servlet.http.HttpSessionBindingEvent;
....

"error" 一词出现在其中,但最后,输出仅显示“50 条警告”。如果我添加另一个问题(例如其中一个答案中建议的 @invalid 标记),我会收到 51 条警告。

我刚从命令行尝试过,当没有错误时,零值是 returned:

> javadoc my.package.name
> ....
> echo $?
> 0

使用以下命令编辑 javadoc 命令后:

/**
 * @invalid
 */

和 运行 再次使用相同的 javadoc 命令,我收到错误消息和 return 代码 1:

> javadoc my.package.name
> ....
> ./my/package/name/Coordinate.java:21: error: unknown tag: invalid
> * @invalid
>   ^
> ....
> echo $?
> 1

所以你只需要检查 javadoc 的 return 值是否为 0。如果您不知道如何检查 return,请阅读 this SO question and answer

即使 javadoc 1.7 报告错误,它 return 的 return 值为零,因此构建不会捕获它。但是,javadoc 1.8 returns 具有非零 return 值,构建确实捕获了该值。