自从使用Maven以来,我已经能够在本地存储库中构建和安装具有不完整Javadoc标记(例如,缺少参数)的项目.

然而,因为我迁移到Java8(1.8.0-ea-b90),所以Maven对于缺少文档标记是绝对严格的,并且当我try 构建或安装Javadoc不是"完美"的项目时,它会向我显示许多与Javadoc问题相关的Javadoc错误.我试图在本地存储库中编译和安装的一些项目是我无法控制的第三方项目.因此,在我的场景中,仅修复所有这些项目中的所有Javadoc的解决方案似乎不可行.

这是我在项目中执行mvn clean package install时看到的输出的一小部分:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.026s
[INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013
[INFO] Final Memory: 27M/437M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10: error: @param name not found
[ERROR] * @param terms the terms to assert
[ERROR] ^
[ERROR] /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11: warning: no description for @return
[ERROR] * @return
[ERROR] ^

在我的POM中,Javadoc Maven插件配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

正如我之前所说的,如果我回到Java7,一切都很好.

UPDATE:

如果我将Javadoc插件配置更改为<failOnError>false</failOnError>(谢谢Martin):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

然后将该项目安装到我的本地存储库中.但是,仍然没有生成Javadoc JAR.

我在控制台中看到的这个新配置的输出片段是:

[错误]MavenReportException:创建存档时出错:退出

请参阅中生成的Javadoc文件

在使用Java7时,如何一步构建源代码、安装项目和生成Javadoc JAR,有什么变通方法吗?

推荐答案

最好的解决方案是修复javadoc错误.如果由于某种原因,这是不可能的(即:自动生成的源代码),那么您可以禁用此判断.

DocLint is a new feature in Java 8,总结为:

提供一种方法,可以在测试早期检测Javadoc注释中的错误

这在默认情况下是启用的,并将在生成Javadocs之前运行大量判断.对于Java8,您需要按照in this thread的规定关闭该选项.您必须将以下内容添加到maven配置中:

<profiles>
  <profile>
    <id>java8-doclint-disabled</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>
    <properties>
      <javadoc.opts>-Xdoclint:none</javadoc.opts>
    </properties>
  </profile>
</profiles>
<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <additionalparam>${javadoc.opts}</additionalparam>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <additionalparam>${javadoc.opts}</additionalparam>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
   </plugins>
</build>

For maven-javadoc-plugin 3.0.0+:

<additionalparam>-Xdoclint:none</additionalparam>

使用

<doclint>none</doclint>

Java相关问答推荐

我想知道为什么我的控制器给出嵌套响应

无法从Spring Boot应用程序连接到SQL Docker服务器

Proguard配置以保留具有参数的注释的成员

SQlite for Android无法使用json_group_array/json_object

为什么不应用类型推断?

当涉及到泛型时,类型推理在Java中是如何工作的?

试着做一个2x2的魔方求解算法,我如何找到解路径(DFS)?

如何使用SpringBoot中的可分页对整数作为字符串存储在数据库中时进行排序

从ActiveMQ Classic迁移到ActiveMQ Artemis需要进行哪些客户端更改?

Log4j与jdk21兼容吗?

允许同时执行两个方法,但不能同时执行这两个方法

是否为计划任务补偿系统睡眠?

X=x*0.90;产生有损转换误差.X*=0.90;不是.为什么?

Java组件项目中的JavaFX对话框国际化

Quarkus:运行时出现EnumConstantNotPresentException

为什么mvn编译生命周期阶段不只是编译已更改的java文件?

我该如何为我的类编写getter和setter方法?

在Java中比较同一多维数组的两个不同的字符串元素

谷歌应用引擎本地服务器赢得';t在eclipse上运行

ResponseEntity.控制器截断响应的JSON部分