2012-10-10 7 views
10

Ich verwende JSR 269 als eine Möglichkeit, Code während der Kompilierung zu analysieren und bei Bedarf fehlzuschlagen. Ich habe Probleme mit der Anzeige der Ausgabe meines Annotationsprozessors in Maven (Ant zeigt die Ausgabe) Ich benutze javax.annotation.processing.Messager, um Warnungen und Fehler anzuzeigen, aber in Maven sehe ich nicht, dass es ausgegeben wird . (Ich weiß, es läuft aber, weil es Code erzeugt, wie es sollte). Irgendwelche Ideen?Annotation Prozessor Ausgabe in Maven

+0

Wie gibt der Prozessor Nachrichten aus? Wie rufen Sie es auf? –

+0

Wird die Ausgabe angezeigt, wenn Sie maven mit dem Parameter '-X' aufrufen? –

+0

@matt b Ich benutze javax.annotation.processing.Messager, um Warnungen anzuzeigen: '_messager = processingEnv.getMessager();' @Jorn: Ich verwende nicht den Parameter -X, der Prozessor wird als Dienstanbieter aufgeführt – iGili

Antwort

12

Ich glaube, Sie laufen in einen Maven Bug oder besser einen Fehler im Compiler-Plugin - MCOMPILER-66. Wenn es um die Verarbeitung von Annotations geht, hat das Compiler-Plugin einige Probleme, zB auch MCOMPILER-62. Wirklich die beste Option ist es, die Annotationsverarbeitung für das Compiler-Plugin zu deaktivieren und maven-processor-plugin zu verwenden. In diesem blog post können Sie sehen, wie man es benutzt. Es sieht so aus:

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

Beachten Sie auch, wie die Abhängigkeit des Annotationsprozessors nur für das Plug-In geeignet ist.

Verwandte Themen