如何使 Java maven 构建因编译器警告而失败?

2022-09-01 22:42:35

我正在尝试:

        <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>

但没有喜悦。现在有什么想法可以像这篇博客文章中建议的那样,在这样的错误上获得中世纪吗?


答案 1

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 会主动禁止显示带有标志的警告,因此 and 标志将被忽略。-nowarn-Xlint-Werror
  • showDeprecation不需要启用,因为已发出弃用警告。-Xlint:all
  • 实验表明,不需要启用,即使文档另有说明。fork

答案 2

3.6.0 中的新功能:标志。这对我有用:maven-compiler-pluginfailOnWarning

  <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>

请注意,我必须排除lint,否则自动事务的注释会破坏构建,并出现神秘的“找不到符号”错误。processing


推荐