En nuestra aplicación empresarial, buscamos una forma dinámica de recopilar datos de nuestras clases de Java. Creamos una interfaz de anotación personalizada (@interface
) con una propiedad name
. Nos gustaría recopilar el valor de esta propiedad de todas las clases anotadas.¿Cómo usar un procesador de anotación personalizado con Maven 2?
Logré crear un AnnotationProcessorFactory
y un AnnotationProcessor
para la anotación personalizada. Como usamos Maven 2, agregué lo siguiente a los complementos en el pom.xml
del proyecto principal.
<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>
Esto reside en el proyecto principal que tiene varios subproyectos. La fábrica y el procesador personalizado se encuentran en uno de estos subproyectos. Las anotaciones personalizadas están dispersas a través de todos los subproyectos, por eso pongo el complemento en el pom.xml
del proyecto principal.
El problema es cuando emite el comando mvn apt:process
recibí una advertencia sobre las anotaciones sin procesadores y nuestra anotación personalizada es una de ellas. Supongo que esto significa que el complemento no puede encontrar la clase de fábrica.
¿Qué debo hacer para que el complemento pueda encontrar la fábrica y el archivo del procesador?
EDIT:
La jerarquía del proyecto es muy simple:
main_project
|-sub_project1
|...
|-sub_projectn
El plug-in está en el pom.xml
del main_project
. Simplemente asumen que la fábrica y el procesador están en sub_project1
y las anotaciones personalizadas están en sub_project2
, sub_project3
, ..., sub_projectn
¿Cómo se ve la jerarquía de proyecto como? – Daniel