建筑格拉德尔
plugins {
id 'java'
}
apply plugin: 'java'
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
annotationProcessor 'com.google.auto.service:auto-service:1.0.1'
implementation 'com.google.auto.service:auto-service:1.0.1'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
}
test {
useJUnitPlatform()
}
注释
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
String value();
String[] ignoreColumns() default {};
}
加工机
@AutoService(TableProcessor.class)
@SupportedAnnotationTypes("com.github.ahuangJM.annotations.Table")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class TableProcessor extends AbstractProcessor {
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
System.out.println("init hit!");
super.init(processingEnv);
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
final Messager messager = processingEnv.getMessager();
messager.printMessage(Diagnostic.Kind.NOTE, "Processing...");
return true;
}
}
\资源\META-INF\javax.annotation.processing.处理器
org.example.processors.TableProcessor
注释消费者
@Table("user-info")
public class UserInfo {
}
建筑格拉德尔
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation files("REDACTED\\code-generator-annotation.jar")
annotationProcessor files("REDACTED\\code-generator-annotation.jar")
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
}
test {
useJUnitPlatform()
}
这应该是一个非常简单的注释处理器,只是打印调试语句。对我来说,这一切似乎都是正确的,但是Process()
在我构建/运行项目2时没有运行。我也尝试过覆盖getSupport dVersion()
和getSupport dAnNotationTypes()
。那没有做任何事情。也尝试过没有@AutoService
,那也没有改变任何事情。
编辑:为什么我可以获得print()和/或
printMessage()语句?
@AutoService(TableProcessor.class)
应该是
@AutoService(Processor.class)
需要注释处理器的帮助。我创建了一个简单的注释处理器,它使用@autoservice注释来检查注释的字段是否为最终字段。但它没有显示任何编译时错误。这是我的配置 注释: 注释处理器: pom文件: 测试文件:
我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?
我在编译使用我的注释处理器的代码时收到以下错误: 关于如何调试这个有什么提示吗?错误输出根本没有用处。有没有办法得到更详细的错误?
我试图让非空注释在NetBeans中工作,这是一个又一个令人头痛的问题。 我遵循了https://checkerframework.org/manual/#netbeans的说明,可以确认是作为编译库和处理器库添加的。我启用了注释处理,并添加了作为注释处理器。 在源代码中,我可以导入import和have注释编译。然而,在构建过程中,我发现: 我需要做什么来解决此错误?
我正在尝试实现注释处理器(AnnotationProcessor)。我遵循这个教程。 我能够调试注释处理器,调试器转到方法:、、、但它不转到方法。 我在网上找不到有用的东西。你能告诉我为什么会发生这种情况以及如何解决吗? 非常感谢。
我有一个包含2个模块的maven项目。其中一个模块包含注释处理器。当我尝试将项目作为Android项目的依赖项导入时,它不会运行注释处理器。找不到生成的类文件。 我从jitpack导入如上所示的项目。jitpack上的构建成功了,我也可以在本地访问代码,这意味着编译成功了。但是应该生成的类并没有生成。所以要么是处理器没有启动,要么是我生成的类在错误的位置?android项目确实使用了许多其他带有注