5

我正在构建我的 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>
4

4 回答 4

2

maven-javadoc-plugin不能配置为在警告时使构建失败(仅在参数错误时)failOnError

你真正想要的是使用maven-checkstyle插件。这是负责检查您的代码是否符合给定的预定义样式的插件。在这种情况下,样式是 Javadoc 必须存在并且不能有警告。因此,像这样配置 Checkstyle 插件:

<plugin>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
    <reportSets>
        <reportSet>
            <reports>
                <report>checkstyle</report>
            </reports>
        </reportSet>
    </reportSets>
    <configuration>
        <failsOnError>true</failsOnError>
        <configLocation>checkstyle.xml</configLocation>
    </configuration>
</plugin>

它引用 a checkstyle.xml(相对于项目基目录)。要检查 Javadoc,您可以使用以下简单的 checkstyle 配置文件:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">
    <module name="TreeWalker">
        <module name="JavadocMethod"/>
        <module name="JavadocType"/>
        <module name="JavadocVariable"/>
        <module name="JavadocStyle"/>
    </module>
</module>

这将使任何 Javadoc 警告的构建失败。Javadoc 模块是高度可配置的;上面的示例配置将在每个方法、每个类型和每个变量上检查 Javadoc 及其正确性。

例如,您可以通过将属性设置为and模块将其限制为仅public方法和public字段:scopeJavadocMethodJavadocVariable

<module name="JavadocMethod">
    <property name="scope" value="public"/>
</module>
<module name="JavadocVariable">
    <property name="scope" value="public"/>
</module>
于 2016-07-01T18:05:36.820 回答
1

如果您在构建元素中使用以下代码段,maven-javadoc-plugin那么即使出现警告,它也会自动失败。

<executions>
    <execution>
        <id>attach-javadocs</id>
        <goals>
            <goal>jar</goal>
        </goals>
    </execution>
</executions>
于 2017-06-03T00:07:51.407 回答
1

该插件的 3.0.1 版本添加了该failOnWarnings选项,从当前的 3.3.1 版本开始仍然支持该选项。您的配置应如下所示:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <version>3.3.1</version>
  <executions>
    <execution>
      <id>attach-javadocs</id>
      <goals>
        <goal>jar</goal>
      </goals>
      <configuration>
        <failOnWarnings>true</failOnWarnings>
      </configuration>
    </execution>
  </executions>
</plugin>
于 2021-09-14T00:08:55.267 回答
0

为此,您应该使用类似Sonarqube的东西。这里没有理由将其作为 CI 的一部分进行检查。因此,这是 SonarQube 的工作,但如果您仍想在 Jenkinse 中检查某些内容,您可以尝试使用Text Finder Plugin for Jenkinse。然后您可以设置包含 java doc 警告的任何 uniqeu 部分的字符串,然后您的构建将被降级。

于 2016-07-01T14:40:18.017 回答