public @interface CustomAnnotation {
String value() default "";
}
public class CustomAnnotationProcessorFactory implements AnnotationProcessorFactory {
@Override
public Collection<String> supportedAnnotationTypes() {
return Arrays.asList("CustomAnnotation");
}
@Override
public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> declaration, AnnotationProcessorEnvironment env) {
return new CustomAnnotationProcessor(env);
}
}
public class CustomAnnotationRunner {
public static void main(String[] args) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
Iterable<String> options = Arrays.asList("-processor", "CustomAnnotation");
Iterable<? extends JavaFileObject> compilationUnits = compiler.getStandardFileManager(null, null, null)
.getJavaFileObjectsFromStrings(Arrays.asList("path/to/YourClass.java"));
JavaCompiler.CompilationTask task = compiler.getTask(null, null, null, options, null, compilationUnits);
task.call();
}
}
<dependency>
<groupId>com.googlecode.alchim</groupId>
<artifactId>alchim</artifactId>
<version>1.0</version>
</dependency>
@CustomAnnotation("Hello, World!")
public class YourClass {
// ...
}