我有这种情况:两个maven模块(jdk6)A和B.
在模块A中,我定义了这些类:
MyBeanAnnotation:这样定义的类的注释:
package x.y.z;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
public @interface MyBeanAnnotation {
String name();
}
MyAnnProcessor:一个扩展AbstractProcessor的类,定义如下:
package x.y.z;
import java.io.File;
import java.util.Date;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic;
@SupportedAnnotationTypes("x.y.z.MyBeanAnnotation")
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class MyAnnProcessor extends AbstractProcessor{
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Hello World!");
}
return true;
}
}
我在META-INF / services中创建了一个名为javax.annotation.processing.Processor的文本文件
x.y.z.MyAnnProcessor
我可以编译它,没问题。
在模块B中:
我创建了一个用MyBeanAnnotation注释的MyAnnotatedBean类
package x.y.z;
import x.y.z.MyBeanAnnotation;
@MyBeanAnnotation(name = "scemochileggee")
public class MyAnnotatedBean {
private String qweq = "qweq";
}
当我从头编译B(例如mvn clean install)时,处理器MyAnnProcessror被正确调用,我可以在编译器日志中看到打印输出
另一方面,当我在Netbeans中编辑它(我只尝试过这个IDE)并保存MyAnnotatedBean文件时,没有任何反应并且未调用MyAnnProcessor。
您是否知道是否有办法让MyProcessor在增量编译中工作?
提前致谢。