2012-10-10 3 views
10

Utilizzo JSR 269 come metodo per analizzare il codice durante la compilazione e, se necessario, fallire. Ho problemi con la visualizzazione dell'output del mio processore di annotazione in Maven (Ant mostra l'output) Sto usando javax.annotation.processing.Messager per visualizzare avvertimenti ed errori, ma in Maven non vedo l'output . (So ​​che funziona, però, perché genera codice come dovrebbe). Qualche idea?Output del processore di annotazione in esperto

+0

In che modo il processore emette i messaggi? Come lo invocate? –

+0

L'output mostra se invochi Maven con il parametro '-X'? –

+0

@matt b Sto utilizzando javax.annotation.processing.Messager per visualizzare gli avvisi: '_messager = processingEnv.getMessager();' @Jorn: Non utilizzo il parametro -X, il processore è elencato come fornitore di servizi – iGili

risposta

12

Penso che tu stia correndo in un bug Maven o meglio un bug nel plugin del compilatore - MCOMPILER-66. Quando si tratta dell'elaborazione delle annotazioni, il plug-in del compilatore presenta diversi problemi, ad esempio anche MCOMPILER-62. In realtà l'opzione migliore è quella di disabilitare l'elaborazione delle annotazioni per il plugin del compilatore e usare lo maven-processor-plugin. In questo blog post puoi vedere come usarlo. Assomiglia a questo:

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

Nota anche come la dipendenza del processore di annotazione sia correttamente applicata solo al plugin.