2012-10-10 36 views
10

Estoy usando JSR 269 como una forma de analizar el código durante la compilación y fallar si es necesario. Tengo problemas para mostrar la salida de mi procesador de anotaciones en maven (Ant muestra la salida) Estoy usando javax.annotation.processing.Messager para mostrar advertencias y errores, pero en maven no veo que sea salida . (Sé que funciona, porque genera código como debería). Alguna idea?Salida de procesador de anotación en maven

+0

¿Cómo funciona el procesador de mensajes de salida? ¿Cómo lo invocas? –

+0

¿Se muestra el resultado si invocas maven con el parámetro '-X'? –

+0

@matt b Estoy usando javax.annotation.processing.Messager para mostrar advertencias: '_messager = processingEnv.getMessager();' @Jorn: No utilizo el parámetro -X, el procesador aparece como un proveedor de servicios – iGili

Respuesta

12

Creo que se está encontrando con un error Maven o mejor un error en el plugin del compilador - MCOMPILER-66. Cuando se trata de procesamiento de anotación, el complemento del compilador tiene varios problemas, por ejemplo, también MCOMPILER-62. Realmente, la mejor opción es inhabilitar el procesamiento de anotaciones para el plugin del compilador y usar el maven-processor-plugin. En este blog post puede ver cómo usarlo. Se ve así:

<plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
      <compilerArgument>-proc:none</compilerArgument> 
     </configuration> 
    </plugin> 
    <plugin> 
     <groupId>org.bsc.maven</groupId> 
     <artifactId>maven-processor-plugin</artifactId> 
     <version>1.3.7</version> 
     <executions> 
      <execution> 
       <id>process</id> 
       <goals> 
        <goal>process</goal> 
       </goals> 
       <phase>process-sources</phase> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-jpamodelgen</artifactId> 
       <version>1.1.0.Final</version> 
       <scope>compile</scope> 
      </dependency> 
     </dependencies> 
    </plugin> 

Tenga en cuenta también cómo la dependencia del procesador de anotación se limita al plugin solamente.

Cuestiones relacionadas