如何使javadocinheritance适用于外部API? (与Maven2)

当类重写具体方法或实现和抽象方法时,除非显式覆盖,否则Javadoc会自动inheritance。

或者,至少该工具尝试这样做。 它似乎不适用于链接的外部API。 例如,当我在我的代码中实现java.util.Map或JRE中的其他内容时,javadocs不会从JRE javadocs / apidocsinheritance/复制。

在我的具体情况下,我试图在Maven2 Javadoc插件中配置它,但是当我直接运行javadoc CLI工具时它是一样的。

我的Maven2 Javadoc插件配置目前看起来像这样:

    org.apache.maven.plugins maven-javadoc-plugin 2.7  maven  http://download.oracle.com/javase/6/docs/api      

有关如何使这项工作的任何指示?

正如@Stephen所提到的,inheritance方法的源文件必须可用,并且必须位于-sourcepath指定的路径上。 这在Javadoc工具文档中有解释:

自动复制方法注释

Javadoc工具能够在以下两种情况下复制或“inheritance”类和接口中的方法注释。 构造函数,字段和嵌套类不inheritancedoc注释。

  • 自动inheritance注释以填充缺少的文本 – 当方法注释中缺少 主要描述或@return @throws@return @param@throws标记时,Javadoc工具从其覆盖或实现的方法中复制相应的主要描述或标记注释(如果有的话,根据下面的算法。

    更具体地说,当缺少特定参数的@param标记时,将从inheritance层次结构中的方法复制该参数的注释。 如果缺少特定exception的@throws标记,则仅在声明该exception时才复制@throws标记。

    此行为与版本1.3及更早版本形成对比,其中任何主要描述或标记的存在将阻止所有注释被inheritance。

  • 使用{@inheritDoc}标记显式inheritance注释 – 在方法主要描述中插入内联标记{@inheritDoc}@return {@inheritDoc}@return {@inheritDoc}@throws标记注释 – 将相应的inheritance主要描述或标记注释复制到该点。

inheritance方法的源文件只需要在-sourcepath指定的路径上,以便文档注释实际可用于复制。 无论是类还是其包都不需要在命令行中传入。 这与1.3.x及更早版本形成对比,其中类必须是文档类

因此,您必须使用javadoc插件的可选配置参数(默认情况下包含项目的源)。


顺便说一下, 是其他东西, 用于向外部项目添加交叉引用链接。 实际上,它们不应该用于JDK。 从配置链接 :

从2.6开始,将添加一个Javadoc API链接,具体取决于项目使用的JDK版本。 从org.apache.maven.plugins:maven-compiler-plugin (在${project.build.plugins}${project.build.pluginManagement}定义)的参数的值中检测Javadoc API的版本${project.build.pluginManagement} ),或通过Javadoc Tool可执行文件计算。 如果要跳过此链接,则需要将配置为false

注意:如果您使用不受支持的JDK(如7.0),则可以使用参数添加其Javadoc API URL,即:

    api_1.7 http://download.java.net/jdk7/docs/api/   ...  

有关更多信息,请参阅参数。

假设您在编译器插件中配置了1.6 source级别,那么Java API的交叉引用链接就可以正常工作(链接指向http://download.oracle.com/javase/6/docs/api/ ),没有什么可以添加的对于Java API。


对我来说,它都不是开箱即用的。 我不得不添加链接部分以使交叉引用工作。

奇怪的。 您是否实际指定了记录的编译器source级别? 以防万一,这对我有用:

   org.apache.maven.plugins maven-compiler-plugin  1.6 1.6    org.apache.maven.plugins maven-javadoc-plugin 2.7     http://commons.apache.org/dbcp/apidocs/ http://commons.apache.org/fileupload/apidocs/    

我不能给你一个确定的答案,但我认为这个难题中缺少的部分是javadoc实用程序需要能够找到相关外部API 的源代码才能使javadocinheritance工作。

我在StackOverflow上有一个类似的问题,它帮助我更好地解决了这个问题,而不是这个任务的接受答案: maven-javadoc-plugin和inheritDoc for Java API核心类

简介:为了从Java核心类inheritanceJavadoc,您需要解压缩它们的源并将它们包含在Javadoc构建中。 Java核心类的源代码在JDK发行版的src.zip文件中提供。