我正在使用目标site
构建我的Maven项目。输出中有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>
答案 0 :(得分: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
属性设置为JavadocMethod
和JavadocVariable
模块,将其限制为仅public
种方法和public
字段:
<module name="JavadocMethod">
<property name="scope" value="public"/>
</module>
<module name="JavadocVariable">
<property name="scope" value="public"/>
</module>
答案 1 :(得分:1)
为此,您应该使用类似Sonarqube的内容。这里没有理由将其作为CI的一部分进行检查。所以,这是SonarQube的工作,但是如果你想在Jenkinse中查看一些内容,你可以尝试使用Text Finder Plugin for Jenkinse。然后你可以设置包含java doc警告的任何uniqeu部分的字符串,然后你的构建将被降级。
答案 2 :(得分:1)
如果您在构建元素中对maven-javadoc-plugin
使用以下代码段,那么即使是警告也会自动失败。
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>