【问题标题】:How to make Maven build (goal site) fail on Javadoc warnings?如何使 Maven 构建(目标站点)在 Javadoc 警告中失败?
【发布时间】:2016-11-03 18:25:02
【问题描述】:

我正在构建我的 Maven 项目,目标是 site。输出中有 Javadoc 警告。 在这种情况下,我的 Maven 构建必须失败。有没有办法做到这一点?

这是我的 POM 的代码 sn-p(我使用的是 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>

【问题讨论】:

  • 有什么可能性?
  • @Hrabosch 可能会在 Javadoc 遇到问题时确保构建失败。例如,让 Jenkins 上的构建失败,以便开发人员收到邮件或其他东西
  • 用JDK 8默认启用doclint,但我建议你在7上运行?

标签: java maven javadoc maven-site-plugin maven-javadoc-plugin


【解决方案1】:

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

【讨论】:

    【解决方案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>
    

    它引用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 模块are highly configurable;上面的示例配置将对每个方法、每个类型和每个变量检查​​ Javadoc 及其正确性。

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

    <module name="JavadocMethod">
        <property name="scope" value="public"/>
    </module>
    <module name="JavadocVariable">
        <property name="scope" value="public"/>
    </module>
    

    【讨论】:

      【解决方案3】:

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

      <executions>
          <execution>
              <id>attach-javadocs</id>
              <goals>
                  <goal>jar</goal>
              </goals>
          </execution>
      </executions>
      

      【讨论】:

      • 尽管对我发出警告,但还是成功了。 Maven 3.8.1,插件版本 3.3.1。
      【解决方案4】:

      插件的 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>
      

      【讨论】:

        猜你喜欢
        • 2015-06-13
        • 2017-08-20
        • 2011-01-22
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多