我正在编写自己的Java8Stream实现,并希望从原始的java.util.stream.Stream接口继承Javadocs。但是我不能让它起作用。生成的Javadoc只显示我的文档,而不显示来自extended接口的文档。
例如,该方法的javadoc只包含文本“一些附加信息”,而不包含来自Stream接口的文档。
/**
* {@inheritDoc}
* Some additional information.
*/
@Override
public Stream<T> filter(Predicate<? super T> predicate) {
// ... my stream implementation...
}这是maven-javadoc-plugin的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<links>
<link>http://docs.oracle.com/javase/8/docs/api/</link>
</links>
</configuration>
</plugin>我是不是错过了这种配置中的一些东西?我在maven编译器插件中将source和target设置为1.8。因此,根据maven-javadoc插件的文档,应该自动检测java。
堆栈溢出上也有一个相似问题,但是那里的答案似乎没有帮助。
发布于 2016-08-01 21:25:28
这是预期的,javadoc只从源路径中的类复制注释。来自方法注释继承
注释:继承的方法的源文件必须位于
-sourcepath选项指定的路径上,以便文档注释可供复制。不需要在命令行上传递类及其包。这与版本1.3.n和更早的版本形成了对比,在这些版本中,类必须是一个文档化的类。
但是,JDK的源代码不在源路径中,因此{@inheritDoc}不会复制它。它们需要被明确地添加;Javadoc FAQ有以下条目
从J2SE继承注释-您的代码还可以自动从J2SE中的接口和类继承注释。您可以通过解压缩随SDK附带的
src.zip文件(但是它并不包含所有源文件)来实现这一点,并将其路径添加到-sourcepath中。当javadoc在您的代码上运行时,它将根据需要从这些源文件加载文档注释。例如,如果代码中的类实现了java.lang.Comparable,那么您实现的compareTo(Object)方法将从java.lang.Comparable继承文档注释。
因此,要使它发挥作用:
maven-javadoc-plugin以使用sourcepath参数添加这些源。subpackages来指定包。或者,我们可以使用excludePackageNames来排除JDK包。@apiNote、@implSpec和@implNote。这些是需要添加tags参数的自定义标记。下面是一个示例配置,其中JDK源代码的路径是/path/to/jdk/sources (您还可以使用环境变量、配置文件设置的属性等)。而且您自己的源文件都在包my.package中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<sourcepath>/path/to/jdk/sources:${basedir}/src/main/java</sourcepath>
<subpackages>my.package</subpackages>
<tags>
<tag>
<name>apiNote</name>
<placement>a</placement>
<head>API Note:</head>
</tag>
<tag>
<name>implSpec</name>
<placement>a</placement>
<head>Implementation Requirements:</head>
</tag>
<tag>
<name>implNote</name>
<placement>a</placement>
<head>Implementation Note:</head>
</tag>
</tags>
</configuration>
</plugin>生成Javadoc,例如使用mvn javadoc:javadoc,将正确地解析{@inheritDoc}。
发布于 2019-01-31 19:43:27
图纳基的回答是很棒的,但是从Java10开始,您还有一个更好的选择。如果将--override-methods=summary传递给Javadoc工具,它将将所有继承的方法向下推到下面的“在类X中声明的方法”部分。这将列出继承的方法。单击方法名称将带用户到基类中的Javadoc定义。
有关背景信息,请参见id=8187386。
https://stackoverflow.com/questions/38707030
复制相似问题