2012-02-08 9 views
12

Estoy tratando:¿Cómo obtengo una compilación de Java Maven que falla por las advertencias del compilador?

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

pero sin alegría. ¿Alguna idea ahora para obtener medieval en tales errores como se sugiere en this blog post?

+0

Hubo un error como se menciona a continuación que ya no es un problema. Esta forma como se especifica con compilerArgument funciona muy bien. –

Respuesta

1

EDIT: Esta respuesta es obsoleta sin embargo no puedo borrarlo ya que era una respuesta aceptada en el momento.

T un error con Maven ver: http://jira.codehaus.org/browse/MCOMPILER-120 se ha corregido en 2.4 de Maven-compiler-plugin pero no creo que haya sido lanzado aún. la etiqueta no funcionará desafortunadamente.

+0

maven-compiler-plugin 2.4 ya se lanzó a Maven Central – yegor256

+0

Sí, pero no fue cuando hice la respuesta. –

+1

Para que quede claro, este error ya no es un problema y el formulario especificado en la pregunta funciona muy bien. –

0

¿Hay una forma alternativa tal vez darle una oportunidad? Tenga en cuenta los s en el extremo de <compilerArguments>

<configuration> 
    <compilerArguments> 
     <Werror /> 
    </compilerArguments> 
</configuration> 
0

Al usar la solución en this comment en el open jira issue para el complemento del compilador maven, la compilación puede fallar para la advertencia del compilador.

Esto funciona para mí:

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

Actualización para el año 2015, utilizando Maven 3.3 y Java 8.

He aquí una configuración mínima compilador que permite a todas las advertencias y hace la acumulación fracasan siempre que sea advertencias ocurrir.

<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 de Nota: Se requiere

  • <showWarnings>true</showWarnings>. Por razones desconocidas, Maven por defecto suprime advertencias de forma activa con el indicador -nowarn, por lo que las banderas -Xlint y -Werror se ignorarían.
  • showDeprecation no necesita habilitarse porque -Xlint:all ya emite advertencias de desactivación.
  • La experimentación muestra que fork no necesita habilitarse, aunque la documentación indique lo contrario.
+0

Me gusta dejar afuera el 'groupId' para complementos Maven incorporados para enfatizar su posición especial como incorporados. Los complementos Maven incorporados tienen el ID de grupo predeterminado 'org.apache.maven.plugins', por lo que no es necesario especificarlo en el POM. (Pruebe 'mvn help: effective-pom' para verificar esto.) – glts

2

Nuevo en maven-compiler-plugin 3.6.0: la bandera failOnWarning. Esto funcionó para mí:

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

Tenga en cuenta que tenía que excluir la pelusa processing o de otra manera anotaciones de auto-materia se romperían la acumulación de "símbolo" que no se encuentran errores críptica.

+1

La respuesta anterior funciona, aunque intenté hacerlo funcionar sin la configuración '-Xlint' y eso no fue exitoso. Encontré ' true' es lo mismo que ' -Werror'. Por sí mismo '-Werror' no hace nada, ya que debe emparejarse con' -Xlint: all'. Por lo tanto, ' true' no hace nada tampoco. –

Cuestiones relacionadas