How do I get a Java maven build to fail for compiler warnings?

simbo1905 picture simbo1905 · Feb 8, 2012 · Viewed 13k times · Source

I am trying:

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

but with no joy. Any ideas now to get medieval on such errors as suggested at this blog post?

Answer

glts picture glts · Nov 20, 2015

Update for the year 2015, using Maven 3.3 and Java 8.

Here's a minimal compiler configuration that enables all warnings and makes the build fail whenever warnings occur.

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

Bits of note:

  • <showWarnings>true</showWarnings> is required. For reasons unknown, Maven by default actively suppresses warnings with the -nowarn flag, so the -Xlint and -Werror flags would be ignored.
  • showDeprecation doesn't need to be enabled because -Xlint:all already emits deprecation warnings.
  • Experimentation shows that fork doesn't need to be enabled, even though the documentation says otherwise.