In unserer Unternehmensanwendung suchen wir nach einer dynamischen Möglichkeit, Daten aus unseren Java-Klassen zu sammeln. Wir haben eine benutzerdefinierte Annotationsschnittstelle (@interface
) mit einer name
-Eigenschaft erstellt. Wir möchten den Wert dieser Eigenschaft von allen annotierten Klassen sammeln.Wie verwende ich einen benutzerdefinierten Annotationsprozessor mit Maven 2?
Ich schaffte es, eine AnnotationProcessorFactory
und eine AnnotationProcessor
für die benutzerdefinierte Annotation zu erstellen. Da wir Maven 2 verwenden, habe ich die Plugins in der pom.xml
des Hauptprojekts hinzugefügt.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0-alpha-5</version>
<configuration>
<factory>our.company.api.component.lister.ComponentAnnotationProcessFactory</factory>
</configuration>
</plugin>
Dies liegt im Hauptprojekt, das mehrere Unterprojekte hat. Die Fabrik und der benutzerdefinierte Prozessor befinden sich in einem dieser Unterprojekte. Die benutzerdefinierten Anmerkungen sind durch alle Unterprojekte verstreut, deshalb habe ich das Plugin in die pom.xml
des Hauptprojekts gestellt.
Das Problem ist, wenn ich den mvn apt:process
Befehl ausstelle, habe ich eine Warnung über die Anmerkungen ohne Prozessoren erhalten, und unsere kundenspezifische Anmerkung gehört zu ihnen. Ich nehme an, das bedeutet, dass das Plugin die Factory-Klasse nicht finden kann.
Was soll ich tun, damit das Plugin die Fabrik und die Prozessordatei finden kann?
EDIT:
Die Hierarchie Projekt ist sehr einfach:
main_project
|-sub_project1
|...
|-sub_projectn
Das Plugin ist in den pom.xml
der main_project
. Einfach mal davon aus, dass die Fabrik und Prozessor sind in sub_project1
und die benutzerdefinierten Beschriftungen sind in sub_project2
, sub_project3
, ..., sub_projectn
Wie sieht Ihre Hierarchie Projekt aussehen? – Daniel