Wie kompiliere ich den Annotationsprozessor mit Ant?

8

Die Frage scheint offensichtlich zu sein, aber die Implementierung ist ziemlich schwierig für mich.

Mein Ziel ist es, Ant-Build-Skript zu schreiben, um einige Klassen zu kompilieren, die eine andere Klasse benötigen, die von Annotation Processor generiert wurde. Ich habe eine benutzerdefinierte Anmerkungen und es ist Prozessor-Implementierung (geerbt von AbstractProcessor -Klasse).

Wie ich verstehe, muss ich:

  1. Kompilieren Sie den Annotation Processor
  2. Führen Sie den Compiler über einige mit Anmerkungen versehene Klassen aus, um die neuen zu generieren.
  3. Kompilieren Sie die Klassen, die generierte Klassen benötigen

Der Code (Schritt 1 und 2):

%Vor%

Tatsächlich ist die erste Aufgabe gut und kompiliert die .class-Datei für die Annotation-Prozessorimplementierung. Es stoppt bei der zweiten Aufgabe.

Ant sagt: Annotation processing without compilation requested but no processors were found.

Was mache ich falsch? Vielleicht sollte ich die Annotation Processor Klasse in eine .jar setzen? Oder geben Sie einen Dateinamen mit der Erweiterung .class als -processorpath Argument an? Ich habe mehrere Möglichkeiten ausprobiert, aber nichts hilft ..

Anmerkungen:

Ich verwende ant javac task anstelle von apt one, weil Dokumentation behauptet, dass apt tool sowie com.sun.mirror API veraltet ist. Ich habe auch diese Frage durchgesehen, aber es gibt keine Informationen wie man den Prozessor richtig kompiliert.

Ich benutze:

  • Java 1.6
  • Ant 1.8.2
ivstas 12.10.2012, 08:33
quelle

1 Antwort

4

Mein üblicher Ansatz ist:

  • packen Sie die Annotation zusammen mit dem Annotationsprozessor in ihr eigenes jar
  • Registrieren Sie den Annotationsprozessor über META-INF / services in diesem jar

Dann wird, wo immer Sie von Ihren Anmerkungen abhängig sind, der Annotationsprozessor automatisch ohne zusätzliche Konfiguration ausgewählt.

    
Puce 12.10.2012, 08:41
quelle

Tags und Links