2012-02-02 4 views
5

Я новичок в maven и checkstyle, поэтому, пожалуйста, будьте вежливы :).как остановить maven build используя контрольный стиль

Мне удалось использовать maven с плагином checkstyle, и я могу создавать отчеты по моему коду. Но я действительно хочу, чтобы я мог остановить процесс сборки maven, если есть ошибки в проверке стиля.

До сих пор мой pom.xml выглядит, как показано ниже:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>my-app</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.12</version> 
     <scope>compile</scope> 
    </dependency> 
    </dependencies> 
    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.8</version> 
     </plugin> 
    </plugins> 
    </reporting> 
</project> 

Как я могу достичь своей цели здесь? Наша команда хочет иметь строгие стандарты стиля кодирования, поэтому я должен ее использовать.

ответ

5

Чтобы достичь того, чего вы хотите, вы должны использовать Maven-Checkstyle-плагин в жизненном цикле сборки в дополнении к жизненному циклу отчетности:

<project> 
... 
<build> 
... 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.8</version> 
    <executions> 
     <execution> 
     <phase>process-sources</phase> 
     <goals> 
      <goal>check</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <failsOnError>true</failsOnError> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 
</project> 
+0

thnx man, есть способ распечатать результаты в командной строке, а не писать в xml-файл? – LostMohican

+1

@LostMohican: Да, вы можете добавить ' true' в раздел конфигурации, чтобы включить вывод консоли. Для получения дополнительных возможностей вы можете посмотреть там: http://maven.apache.org/plugins/maven-checkstyle-plugin/check-mojo.html –

3

Вы можете попробовать установить failsOnError property, например.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.8</version> 
    <configuration> 
    <failsOnError>true</failsOnError> 
    </configuration> 
    </plugin> 
5

Я понимаю, что там были некоторое время, так как этот вопрос был задан, но ни один из вышеперечисленных ответов не разрешил это для меня.

для того, чтобы строить, чтобы потерпеть неудачу на нарушения, я должен был изменить значение violationSeverity от своего значения по умолчанию error к warning в configuration блоке, аналогично:

<plugin> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.17</version> 
    <dependencies> 
     <dependency> 
      <groupId>com.puppycrawl.tools</groupId> 
      <artifactId>checkstyle</artifactId> 
      <version>7.5.1</version> 
     </dependency> 
    </dependencies> 
    <executions> 
     <execution> 
      <id>validate</id> 
      <phase>validate</phase> 
      <configuration> 
       <configLocation>checkstyle.xml</configLocation> 
       <encoding>UTF-8</encoding> 
       <consoleOutput>true</consoleOutput> 
       <failsOnError>false</failsOnError> 
       <failOnViolation>true</failOnViolation> 
       <violationSeverity>warning</violationSeverity> 
       <linkXRef>false</linkXRef> 
      </configuration> 
      <goals> 
       <goal>check</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Кроме того, обратите внимание, что мы установили слегка измененная версия стилей (определена в checkstyle.xml), в основном на основе последних google_checks.xml. Однако для того, чтобы это работало, необходимо было также обновить зависимость com.puppycrawl.tools.checkstyle.