我正在以目标构建我的 Maven 项目site。输出中有 Javadoc 警告。在这种情况下,我的 Maven 构建必须失败。有没有办法做到这一点?
这是我的 POM 的代码片段(我使用的是 Maven 3.3):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.5</version>
<configuration>
<generateReports>true</generateReports>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.3</version>
<configuration>
<show>private</show>
<failOnError>true</failOnError>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud) 我正在使用 Maven Javadoc 插件,如下所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我安装了多个 JDK 版本,并且希望能够使用其中任何一个版本构建项目。上面的配置在 Java 8 上工作正常,但在 Java 11 上失败并出现以下错误
无法在项目上执行目标 org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (attach-javadocs) ...: MavenReportException: 生成 Javadoc 时出错: 无法找到 javadoc 命令: 环境变量JAVA_HOME 设置不正确。
显而易见的解决方案是设置 JAVA_HOME。但正如我提到的,我有多个版本的 JDK,因此每次我想使用另一个版本时都重新配置 JAVA_HOME 一点也不方便。
另一个解决方案(来自Unable to find javadoc command - maven)是将以下配置添加到插件中:
<configuration>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这使得它可以与 Java 11 一起使用,但会破坏 Java 8,因为javadoc位置就${java.home}/../bin/javadoc在这种情况下。
理想情况下,我总是想从 Maven 使用的 java 可执行文件所在的目录中使用javadoc,但我还没有找到使用 Maven Javadoc 插件来实现这一点的方法。
当类重写具体方法或实现和抽象方法时,除非显式覆盖,否则Javadoc会自动继承.
或者,至少该工具尝试这样做.它似乎不适用于链接的外部API.例如,当我在我的代码实现java.util.Map或JRE中的其他内容时,javadocs不会从JRE javadocs/apidocs继承/复制.
在我的具体情况下,我试图在Maven2 Javadoc插件中配置它,但是当我直接运行javadoc CLI工具时它是一样的.
我的Maven2 Javadoc插件配置目前如下所示:
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
<configuration>
<stylesheet>maven</stylesheet>
<links>
<link>http://download.oracle.com/javase/6/docs/api</link>
</links>
</configuration>
</plugin>
</plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)
有关如何使这项工作的任何指示?
在使用以下配置执行“clean skip:skip”后,我想跳过在“target/site”文件夹中生成“testapidocs”文件夹。
构建配置:
<build>
<plugins>
.................
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.2</version>
</plugin>
</plugins>
.........
</build>
Run Code Online (Sandbox Code Playgroud)
报告配置:
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
</plugin>
</plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)
当我运行“clean site:site”时,它会在“target”目录下创建以下文件夹:
目标/站点/apidoc
目标/站点/testapidocs - 想跳过这个
我试图从javadoc网站中排除一堆软件包.
不幸的是,这个插件似乎过着自己的生活,当它被配置为报告插件access denied时,它在移动文件时失败了,因此它被更改为普通插件,然后配置为以站点目标(聚合)运行.通过这样做,我们生成了javadoc,并在网站下发布它应该是.
但似乎插件的配置参数根本没有生效.我试图移动<excludePackageNames>元素 - 既是一般配置又是聚合目标的特定配置 - 我甚至为我们的整个代码库添加了一个排除项,所有文件仍然生成.
我要做的是简单地删除一些不应该在javadoc中的软件包.谁拥有这个插件和配置打得很好,排除包?
这是我现在使用的配置,创建了javadoc,但生成了包括排除在内的所有包.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<excludePackageNames>my.company.packages.*</excludePackageNames>
</configuration>
<executions>
<!-- Hook up the Javadoc generation on the site phase -->
<execution>
<id>aggregate</id>
<goals>
<goal>aggregate</goal>
</goals>
<phase>site</phase>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
有什么想法,很高兴吗?
我们使用自定义doclet从自定义javadoc标记生成报告,并使用Maven网站插件和javadoc插件生成此报告和常规Java API文档.
POM的部分如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<reportSets>
<reportSet>
<id>html</id>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
<reportSet>
<id>custom_report</id>
<configuration>
...
</configuration>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
</reportSets>
</plugin>
Run Code Online (Sandbox Code Playgroud)
在Maven 2下,这很好用,但是在Maven 3中只生成了一个报告,它是POM中指定的最后一个报告(通过交换reportSet元素来确定).
经过一些实验,我发现如果我将常规报告的目标从"javadoc"改为"test-javadoc",那么我从两个报告集中得到了输出.所以问题似乎是,使用Maven 3我无法生成两个使用相同javadoc-plugin目标的报告.
这是一个错误,还是有一些我错过的会员?我移离行家-Javadoc的插件安装reporting到configuration该网站插件如在描述http://maven.apache.org/plugins/maven-site-plugin-3.0-beta-3/maven-3.html,至徒劳无功.我正在使用Maven 3.0.4,maven-site-plugin 3.0-beta-3和maven-javadoc-plugin 2.8.1.
谢谢!
我正在研究一个maven项目,并希望生成最基本的javadoc.
这是我添加到我的pom.xml的插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
然后我运行目标mvn clean包,并成功清理和打包我的项目后说
[INFO] --- maven-javadoc-plugin:2.8.1:jar (attach-javadocs) @ project-name ---
[INFO] Skipping javadoc generation.
Run Code Online (Sandbox Code Playgroud)
我试过添加属性:
<properties>
<maven.javadoc.skip>false</maven.javadoc.skip>
</properties>
Run Code Online (Sandbox Code Playgroud)
并且还在cmd提示符中尝试了这个:
mvn clean package -Dmaven.javadoc.skip=false
Run Code Online (Sandbox Code Playgroud)
没有区别...
我公然失踪的是什么?
我正在尝试使用gitflow-helper-maven-plugin我的maven构建的扩展.
因此,我想配置我的项目,以便在构建发布版本时运行一些额外的步骤,并在编译SNAPSHOT版本时跳过它们,但是如果${project.version}包含,我找不到启用配置文件的方法-SNAPSHOT.
有什么建议吗?
java maven maven-javadoc-plugin maven-source-plugin maven-profiles
Javadoc(通过Maven)在我的Java JAX-RS接口方法签名中给出了以下错误:
error: element value must be a constant expression
Run Code Online (Sandbox Code Playgroud)
这是我的JAX-RS接口:
public interface FooResource {
@Consumes(APPLICATION_FORM_URLENCODED_UTF_8)
public void bar();
}
Run Code Online (Sandbox Code Playgroud)
Javdoc给出了错误@Consumes.以下是APPLICATION_FORM_URLENCODED_UTF_8出现在MyAppConstants同一项目中的定义:
public static final String APPLICATION_FORM_URLENCODED_UTF_8 =
APPLICATION_FORM_URLENCODED + ";" + CHARSET_PARAMETER + "=UTF-8";
Run Code Online (Sandbox Code Playgroud)
这里是这样定义的APPLICATION_FORM_URLENCODED,它出现在javax.ws.rs.core.MediaType:
public final static String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded";
Run Code Online (Sandbox Code Playgroud)
这里是定义CHARSET_PARAMETER,也出现在javax.ws.rs.core.MediaType:
public static final String CHARSET_PARAMETER = "charset";
Run Code Online (Sandbox Code Playgroud)
现在我问你:APPLICATION_FORM_URLENCODED_UTF_8在编译时不是很常见?
错误消息没有说我必须提供文字.它说我必须提供一个常数.那么这不是一个常数呢?
(我几乎可以发誓这种情况曾经有效但突然停止了工作.)
更新: 找到原因,但仍然不明白.
出于某种原因,仅仅包括swagger-maven-plugin在POM中就会触发这个问题!我的代码根本没有改变,但是一旦我添加了以下依赖项,我突然得到现有代码的Javadoc警告!
<dependency>
<groupId>com.github.kongchen</groupId> …Run Code Online (Sandbox Code Playgroud) java annotations javadoc maven-javadoc-plugin swagger-maven-plugin
我在Windows 10上使用OpenJDK 11.我有一个非常简单的POM,用于生成Javadocs的单个Java文件.这是一个摘录:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
奇怪的是刚刚运行mvn clean package会导致错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:jar (default) on project foobar: MavenReportException: Error while generating Javadoc:
[ERROR] Exit code: 1 - javadoc: error - cannot read Input length = 1
[ERROR]
[ERROR] Command line was: C:\bin\jdk-11\bin\javadoc.exe @options @packages
Run Code Online (Sandbox Code Playgroud)
在target/apidocs只有三个文件:javadoc.bat,options,和packages.该options文件是最有趣的.它明确地说UTF-8到处都是,应该如此.但看看这些线:
-sourcepath …Run Code Online (Sandbox Code Playgroud)