Need help with annotation processor . I have created a simple annotation processor which uses @autoservice annotation that checks whether the field which is annotated is final. But it is not showing any compile time errors. This is my configuration
Annotation:
@Retention(RetentionPolicy.SOURCE) @Target(ElementType.FIELD) public @interface Store { int temp() default 0; } Annotation Processor:
@SupportedAnnotationTypes("com.self.Store") @AutoService(Processor.class) public class Process extends AbstractProcessor { @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(Store.class)) { TypeElement typeElement = (TypeElement) element; for (Element element2 : typeElement.getEnclosedElements()) { VariableElement variableElement = (VariableElement) element2; if (!variableElement.getModifiers().contains(Modifier.FINAL)) { processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "it should be final"); } } } return true; } } pom file:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>annotations</groupId> <artifactId>annotations</artifactId> <version>0.0.1-SNAPSHOT</version> <name>annotation</name> <dependencies> <dependency> <groupId>com.google.auto.service</groupId> <artifactId>auto-service</artifactId> <version>1.0-rc2</version> <optional>true</optional> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project> Testing file:
public class Test { @Store public int id; }