@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface GenerateBuilder {
String value() default "";
}
@SupportedAnnotationTypes("com.example.GenerateBuilder")
public class GenerateBuilderProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (TypeElement annotation : annotations) {
for (Element element : roundEnv.getElementsAnnotatedWith(annotation)) {
if (element instanceof TypeElement) {
String className = ((TypeElement) element).getQualifiedName().toString();
generateBuilderForClass(className);
}
}
}
return true;
}
private void generateBuilderForClass(String className) {
}
}
<build>
<plugins>
<plugin>
<groupId>org.bushrod</groupId>
<artifactId>builder-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<processor>
com.example.GenerateBuilderProcessor
</processor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
org.builder:builder-core:1.0.0
</dependency>
</dependencies>
</plugin>
</plugins>
</build>