Search code examples
javamaven-2javac

Is it possible to get maven to accept maxerrs for its compiler plugin?


I have a project where I am responsible for fixing some errors and another developer is responsible for other errors. The number of errors is well over a hundred, and as I'm fixing my errors, her errors are piling up. I'm at the point where I see 99 of her errors and one of mine, and I assume I will soon get to a point where it is 100 of hers. I looked into using this configuration for maven:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <compilerArgument>-Xmaxerrs 1000</compilerArgument>
  </configuration>
</plugin>

But no dice:

Failure executing javac,  but could not parse the error:
javac: invalid flag: -Xmaxerrs 1000
Usage: javac <options> <source files>
use -help for a list of possible options

On the command line using javac, the maxerrs flag works as expected, but I can't seem to make the leap to maven with it.

Any ideas?


Solution

  • Using the "Map syntax" worked for me:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
          <fork>true</fork>
          <compilerArguments>
            <Xmaxerrs>1000</Xmaxerrs>
          </compilerArguments>
        </configuration>
      </plugin>
    

    The option is passed as expected:

    $ mvn clean compile -X
    ...
    [DEBUG] Using compiler 'javac'.
    [DEBUG] Source directories: [/home/pascal/Projects/stackoverflow/Q3358242/src/main/java]
    [DEBUG] Classpath: [/home/pascal/Projects/stackoverflow/Q3358242/target/classes]
    [DEBUG] Output directory: /home/pascal/Projects/stackoverflow/Q3358242/target/classes
    [DEBUG] Classpath:
    [DEBUG]  /home/pascal/Projects/stackoverflow/Q3358242/target/classes
    [DEBUG] Source roots:
    [DEBUG]  /home/pascal/Projects/stackoverflow/Q3358242/src/main/java
    [DEBUG] Command line options:
    [DEBUG] -d /home/pascal/Projects/stackoverflow/Q3358242/target/classes -classpath /home/pascal/Projects/stackoverflow/Q3358242/target/classes: -sourcepath /home/pascal/Projects/stackoverflow/Q3358242/src/main/java: /home/pascal/Projects/stackoverflow/Q3358242/src/main/java/com/stackoverflow/q3358242/App.java -g -nowarn -target 1.5 -source 1.5 -encoding UTF-8 -Xmaxerrs 1000
    [INFO] Compiling 1 source file to /home/pascal/Projects/stackoverflow/Q3358242/target/classes
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    ...
    

    The odd part is that I get the exact same debug output (with the exact same Command line options) when using the alternative configuration you provided... except that it fails due to a Failure executing javac. You should raise a Jira issue, there is definitely something weird.