Как я могу получить сборку Java Maven для сбоя для предупреждений компилятора? - PullRequest
17 голосов
/ 08 февраля 2012

Я пытаюсь:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <compilerArgument>-Werror</compilerArgument>
                <fork>true</fork>
            </configuration>
        </plugin>

но без радости. Есть какие-нибудь идеи, чтобы стать средневековыми в отношении таких ошибок, как предложено в этом блоге ?

Ответы [ 5 ]

25 голосов
/ 20 ноября 2015

Обновление за 2015 год с использованием Maven 3.3 и Java 8.

Вот минимальная конфигурация компилятора, которая включает все предупреждения и делает сборка терпит неудачу всякий раз, когда появляются предупреждения.

<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <showWarnings>true</showWarnings>
            <compilerArgs>
                <arg>-Xlint:all</arg>
                <arg>-Werror</arg>
            </compilerArgs>
        </configuration>
    </plugin>
</plugins>

Биты примечания:

  • <showWarnings>true</showWarnings> требуется. По неизвестным причинам Maven по умолчанию активно подавляет предупреждения с флагом -nowarn, поэтому флаги -Xlint и -Werror будут игнорироваться.
  • showDeprecation включать не нужно, поскольку -Xlint:all уже выдает предупреждения об устаревании.
  • Эксперименты показывают, что fork не нужно включать, даже если В документации сказано иное.
5 голосов
/ 07 декабря 2016

Новое в maven-compiler-plugin 3.6.0: флаг failOnWarning.Это сработало для меня:

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.0</version>
    <executions>
      <execution>
        <id>compile</id>
        <phase>process-sources</phase>
        <goals>
          <goal>compile</goal>
        </goals>
        <configuration>
          <compilerArgument>-Xlint:-processing</compilerArgument>
          <failOnWarning>true</failOnWarning>
        </configuration>
      </execution>
    </executions>
  </plugin>

Обратите внимание, что мне пришлось исключить processing ворс, иначе аннотации автоматериала сломали бы сборку с загадочными ошибками "символ не найден".

2 голосов
/ 08 февраля 2012

РЕДАКТИРОВАТЬ: Этот ответ устарел, но я не могу удалить его, так как он был принят на тот момент.

Эта ошибка с Maven: https://issues.apache.org/jira/browse/MCOMPILER-120 она была исправлена ​​в 2.4 из плагина Maven-compiler-plugin, но я не верю, что он был выпущен. тег не сработает, к сожалению.

0 голосов
/ 09 февраля 2012

Используя обходной путь в этом комментарии в open jira проблема для плагина компилятора maven, сборка может быть не выполнена из-за предупреждения компилятора.

Это работает для меня:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <compilerId>javac</compilerId>
            <source>1.6</source>
            <target>1.6</target>
            <compilerArgument>-Werror</compilerArgument>
            <showDeprecation>true</showDeprecation>
        </configuration>

        <dependencies>
           <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-api</artifactId>
                <version>1.8.2</version>
                <exclusions>
                  <exclusion>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-component-api</artifactId>
                  </exclusion>
                </exclusions>
           </dependency>
           <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-manager</artifactId>
                <version>1.8.2</version>
                <exclusions>
                  <exclusion>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-component-api</artifactId>
                  </exclusion>
                </exclusions>
           </dependency>
           <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac</artifactId>
                <version>1.8.2</version>
                <scope>runtime</scope>
                <exclusions>
                  <exclusion>
                        <groupId>org.codehaus.plexus</groupId>
                        <artifactId>plexus-component-api</artifactId>
                   </exclusion>
                </exclusions>
          </dependency>
       </dependencies>
    </plugin>
0 голосов
/ 08 февраля 2012

Есть альтернативная форма, может быть, попробовать?Обратите внимание на конец <compilerArguments>

<configuration>
    <compilerArguments>
        <Werror />
    </compilerArguments>
</configuration>
...