如何让java maven构建失败以获得编译器警告?

时间:2012-02-08 11:41:38

标签: java maven compiler-construction build lint

我在尝试:

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

但没有快乐。现在有任何想法可以在this blog post建议的错误中获得中世纪的想法吗?

7 个答案:

答案 0 :(得分:25)

使用Maven 3.3和Java 8进行2015年更新。

这是一个最小的编译器配置,可以启用所有警告和制作 每当发出警告时,构建都会失败。

<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,也不需要启用{{1}} 文件说不然。

答案 1 :(得分:5)

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 lint或其他自动问题的注释会破坏构建时使用隐藏的#34;符号未找到&#34;错误。

答案 2 :(得分:2)

编辑:这个答案已经过时,但我无法将其删除,因为这是当时接受的答案。

这是Maven的一个错误:https://issues.apache.org/jira/browse/MCOMPILER-120它已经在Maven-compiler-plugin的2.4中得到修复,但我不相信它已经发布了。不幸的是,标签不起作用。

答案 3 :(得分:1)

2020年的更新,我正在使用Spring Boot 2.2.5。以下配置可以在发生警告,错误时停止mvn install

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <failOnError>true</failOnError>
        <failOnWarning>true</failOnWarning>
    </configuration>
 </plugin>

答案 4 :(得分:0)

还有一种替代形式可能试一试吗?请注意<compilerArguments>

末尾的s
<configuration>
    <compilerArguments>
        <Werror />
    </compilerArguments>
</configuration>

答案 5 :(得分:0)

通过使用this comment中的open jira issue for 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>

答案 6 :(得分:0)

当我正在寻找一个可行的解决方案来使我的 Maven 构建失败以显示编译器警告时,我来到了这篇文章

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <fork>true</fork>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Werror</arg> 
            <arg>-Xlint:all</arg>
        </compilerArgs>
    </configuration>
</plugin>

更多详细解释请参考以下链接

Treat warnings As Errors