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

后端 未结 6 539
暖寄归人
暖寄归人 2020-12-10 11:01

I am trying:

        
            org.apache.maven.plugins
            maven-compiler-plugin&l         


        
相关标签:
6条回答
  • 2020-12-10 11:29

    There is an alternate form perhaps give it a try? Note the s on the end of <compilerArguments>

    <configuration>
        <compilerArguments>
            <Werror />
        </compilerArguments>
    </configuration>
    
    0 讨论(0)
  • 2020-12-10 11:32

    EDIT: This answer is outdated however I can't delete it as it was an accepted answer at the time.

    This a bug with Maven see: https://issues.apache.org/jira/browse/MCOMPILER-120 it's been fixed in 2.4 of the Maven-compiler-plugin but I don't believe that's been released yet. tag won't work either unfortunately.

    0 讨论(0)
  • 2020-12-10 11:38

    By using the workaround in this comment in the open jira issue for maven compiler plugin, the build can be failed for compiler warning.

    This works for me:

        <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 讨论(0)
  • 2020-12-10 11:44

    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.
    0 讨论(0)
  • 2020-12-10 11:44

    An update on 2020, I am using Spring Boot 2.2.5. The following config can stop the mvn install when warning, error happen.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <failOnError>true</failOnError>
            <failOnWarning>true</failOnWarning>
        </configuration>
     </plugin>
    
    0 讨论(0)
  • 2020-12-10 11:45

    New in maven-compiler-plugin 3.6.0: the failOnWarning flag. This worked for me:

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

    Note that I had to exclude the processing lint or otherwise auto-matter's annotations would break the build with cryptic "symbol not found" errors.

    0 讨论(0)
提交回复
热议问题