3

Я строю свой проект Maven с целью site. На выходе есть предупреждения Javadoc. В этом случае моя сборка Maven должна потерпеть неудачу. Есть ли способ сделать это?Как сделать сборку Maven (цель сайта) неудачной при предупреждении Javadoc?

Вот фрагмент кода моей 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> 
+1

Возможность чего? – Hrabosch

+0

@Hrabosch возможность убедиться, что сборка завершилась неудачно, если Javadoc столкнулся с проблемой. Например, сделайте сборку на Jenkins неудачной, чтобы разработчики получили почту или что-то. –

+1

С JDK 8 по умолчанию включен doclint, но я предлагаю вам запустить на 7? – Hrabosch

ответ

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 и его правильность на каждый метод, каждый тип и каждую переменную.

В качестве примера, вы можете ограничить это только public методов и public полей, устанавливая scope свойство модулей JavadocMethod и JavadocVariable:

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

Для этого, вы должны использовать что-то вроде Sonarqube. Здесь нет оснований проверять его как часть CI. Итак, это работа для SonarQube, но если вы хотите еще что-то проверить в Jenkinse, вы можете попробовать использовать Text Finder Plugin for Jenkinse. Затем вы можете установить строку, содержащую любую часть uniqeu предупреждения java doc, а затем ваша сборка будет понижена.

1

Если вы используете следующий фрагмент кода для maven-javadoc-plugin в сборки элемента, то это автоматически выйдет из строя даже для предупреждений.

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