问题
我正在运行mvn javadoc:javadoc生成JavaDoc,我对结果感到满意,除了一件事:它为来自第三方库或我们自己的代码库的任何类提供了完全限定的类名.例如,
它为返回其中一个类的方法提供了com.project.beans.BeanA,com.project.beans.BeanB的返回类型.
它为获取JSON对象的方法提供了一个param类型的org.codehaus.jettison.json.JSONObject.(虽然它为一个带有java.lang.Integer的方法提供了一个param类型的Integer.)
题
出于可读性目的,有没有办法为这些类生成速记名称?即BeanA,BeanB,JSONObject.
有没有办法在没有任何XML配置的情况下执行此操作?
提前致谢 :-)
在重构过程中,JavaDoc 经常会过时。它描述了不再存在或缺少一些新参数的方法参数,以举例说明。
如果有一个 Maven 插件会自动检查现有的 JavaDoc 并在存在某种“JavaDoc 违规”时停止构建,那就太好了。我见过 Maven-JavaDoc-Plugin 和 maven-doccheck,但两者似乎都只能在发生违规时自动修复现有的 JavaDoc,而不是放弃一些错误或警告。
有谁知道是否有这样的 Maven 插件以及如何存档?
我有多模块Maven项目,我在其中运行maven-javadoc-plugin来生成javadoc.在我的父pom.xml中,我已经定义了插件构建如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<!-- Default configuration for all reports -->
</configuration>
<executions>
<execution>
<id>aggregate</id>
<goals>
<goal>aggregate-jar</goal>
</goals>
<phase>install</phase>
<configuration>
<!-- Specific configuration for the aggregate report -->
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当我运行mvn clean install构建失败并具有未解析的依赖项时,但我看到以下警告:
[警告]依赖项:[my.application:my-module:jar:1.7.1]无法解析但已在反应堆中找到(可能是快照).此依赖项已从Javadoc类路径中排除.您应该在执行mvn install后重新运行javadoc.
由于我目前正在构建我的模块1.7.1,我会假设Maven在构建my-module后检测到并运行aggregate-jar,但由于某种原因,它希望my-module已经安装在repo中.
我的Maven版本是3.0.4.请记住,我是Maven构建的新手,所以这可能是一个非常简单的问题,但我无法找到任何答案.
一些观察:
mvn clean install没有javadoc插件aggregate-jar目标,构建成功aggregate目标运行正常.我开发了一个 Java 库,它利用了我也开发的其他一些库。它们全部在线发布并使用 Maven 进行管理。
我的问题涉及在生成的 Javadoc 中正确包含链接。例如,如果我的库中的类扩展了各种接口,则仅针对属于我的项目的接口显示到这些类的链接。
然后,我的问题是:如何指示 maven 生成 javadoc,以便正确解析项目外部类的链接(在线提供)?
我的父 pom明确声明对 maven-javadoc-plugin 2.9.1 的依赖
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
...
Run Code Online (Sandbox Code Playgroud)
和
<reporting>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
...
Run Code Online (Sandbox Code Playgroud)
(请参阅pom 中的 Maven 插件版本(似乎)已忽略)并mvn help:effective-pom显示正在使用 2.9.1。但是,构建使用的是 2.10,这会导致构建失败(请参阅
maven-javadoc-plugin 中断 mvn release:perform和http://jira.codehaus.org/browse/MJAVADOC-407)
mvn help:describe -DgroupId=org.apache.maven.plugins \
-DartifactId=maven-javadoc-plugin
Run Code Online (Sandbox Code Playgroud)
显示
Name: Apache Maven Javadoc Plugin
Description: The Apache Maven Javadoc Plugin is a plugin that uses the
javadoc tool for generating javadocs for the specified project.
Group Id: org.apache.maven.plugins
Artifact Id: maven-javadoc-plugin
Version: 2.10 …Run Code Online (Sandbox Code Playgroud) 我是asciidoc的新手。我想从java文件中带注释的javadoc(asciidoc格式)生成HTML文档。
例如java文件
/**
* = Asciidoclet
*
* Sample comments that include `source code`.
*
* [source,java]
* --
* public class Asciidoclet extends Doclet {
* private final Asciidoctor asciidoctor = Asciidoctor.Factory.create();
*
* @SuppressWarnings("UnusedDeclaration")
* public static boolean start(RootDoc rootDoc) {
* new Asciidoclet().render(rootDoc);
* return Standard.start(rootDoc);
* }
* }
* --
*
* @author https://github.com/johncarl81[John Ericksen]
*/
public class Asciidoclet extends Doclet {
}
Run Code Online (Sandbox Code Playgroud)
我可以从.ad文件生成html文件,但是我不知道如何从javadoc生成.ad(或任何asciidoc格式的文件)。
所以我想生成.ad(asciidoc文件),我正在使用asciidoctor-maven-plugin生成html文档。asciidoctor-maven-plugin将在sourceDirectory中检查.ad文件,并在outputDirectory中生成html文件。
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<version>${asciidoctor.version}</version>
<executions>
<execution>
<id>output-html</id>
<phase>generate-resources</phase>
<goals> …Run Code Online (Sandbox Code Playgroud) 我试图生成实际链接到我的依赖项的Javadoc的Javadoc.我已经尝试了各种方法来生成Javadoc,它不会为我的依赖项中的类的引用生成完全限定的类名.我想要使用简化的类名链接到Java doc.但是,即使使用Java API类名,我也没有链接并拥有完全限定的类名.我正在使用Java 8.我有以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.2</version>
<configuration>
<reportOutputDirectory>${project.basedir}/target</reportOutputDirectory>
<destDir>javadoc</destDir>
<windowtitle>Epiphany</windowtitle>
<doctitle>Epiphany</doctitle>
<show>private</show>
<detectLinks>false</detectLinks>
<detectOfflineLinks>true</detectOfflineLinks>
<linksource>true</linksource>
<detectJavaApiLink>false</detectJavaApiLink>
<additionalparam>-Xdoclint:none</additionalparam>
<links>
<link>http://docs.oracle.com/javase/8/docs/api</link>
</links>
</configuration>
<executions>
<execution>
<goals>
<goal>javadoc</goal>
<goal>test-javadoc</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我在maven编译器配置中将源设置为Java 8.我尝试使用detectJavaApiLinkset来true省略Java 8 Javadoc的链接,但是Javadoc没有生成Java API类的链接,并且我在Javadoc中对它们的所有引用都是完全限定的类名.
我曾尝试设置detectJavaApiLink到false使用与指定的URL(没有,没有尾随斜线)上面的配置,我也得到相同的结果,与此错误一起:
[WARNING] javadoc: warning - Error fetching URL: http://docs.oracle.com/javase/8/docs/api
Run Code Online (Sandbox Code Playgroud)
我已经尝试检测基于我声明的依赖项的链接,我已经尝试将其设置为false然后提供到Javadoc的链接,我仍然没有链接,并且我的依赖项中的类的所有类名都是完全限定的.我到底做错了什么?包列表文件在指定的URL处可用,因此我不明白为什么Javadoc无法访问它们或位于那里的Javadoc.
更新:
将我的maven javadoc插件版本更改为2.10.3.现在,如果我设置detectJavaApiLink到true并删除链接的Java 8的javadoc,正确生成javadoc的链接到Java API类和使用了简化的名称.
但是,我仍然遇到第三方依赖项问题并链接到他们的Javadoc.如果我设置detectLinks为true,则无法为其中任何一个找到javadoc.如果我将其设置为false并手动配置位置,我仍然会收到一条错误消息,指出它无法获取URL:
[WARNING] javadoc: warning - Error fetching URL: https://selenium.googlecode.com/git/docs/api/java
Run Code Online (Sandbox Code Playgroud)
我更新的maven …
I have a problem with the Maven Javadoc Plugin and a custom doclet.
I'm using the maven-javadoc-plugin v2.10.1 and a custom doclet which is basicly a maven jar project.
I have also a settings.xml which defines the central repository to a custom artifactory.
The problem is that evertime I run the maven-javadoc-plugin it tries to resolves the dependencies of the custom doclet from https://repo.maven.apache.org/maven2, the doclet himself it resolves from the custom artifactory.
The debug output is also …
我不太确定使用此标签的正确方法是什么,但我这样使用它:
<sourceFileExcludes>
<exclude></exclude>
<exclude></exclude>
</sourceFileExcludes>
Run Code Online (Sandbox Code Playgroud)
它根本不起作用。似乎 Maven 中有一个已知的错误,该标签将无法工作,因为我发现了这些线程: https ://stackoverflow.com/a/26223872/3209177
但那是不久前的事了。我在maven网站上也没有找到太多有用的信息。
那么,当我们使用 Maven 构建 javadoc 时,如何排除某些源文件/类呢?
在链接升级到Java 10之后,将Javadoc注释中的链接断开,并尝试重现相同的内容,同时我可以将构建配置设置为:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<additionalOptions>
<additionalOption>-html5</additionalOption>
</additionalOptions>
<nodeprecatedlist>true</nodeprecatedlist>
<notree>true</notree>
<quiet>true</quiet>
<show>public</show>
<splitindex>true</splitindex>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
注 - 这在执行时与Java-9一起成功运行mvn clean verify -X.
另一方面,如果我将源和目标更改为10(Java-10),则构建将PluginExecutionException因NullPointerException以下堆栈跟踪而导致失败:
Execution attach-javadocs of goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.0:jar failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) …Run Code Online (Sandbox Code Playgroud)