как остановить сборку Maven с помощью checkstyle - PullRequest
7 голосов
/ 02 февраля 2012

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

Мне удалось использовать 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>

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

Ответы [ 3 ]

18 голосов
/ 16 февраля 2017

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

Чтобы сбой сборки при нарушениях, мне пришлось изменить значение 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.

5 голосов
/ 02 февраля 2012

Чтобы достичь желаемого, вам нужно использовать плагин 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>
3 голосов
/ 02 февраля 2012

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

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