首页 > 解决方案 > 如何在不同项目中使用库的注释处理器中定义的注释?

问题描述

以下是我的注释定义,

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface ErrorMap {
    String errorMapName();
    String errorMapPackage() default "com.company.dp.exceptions";
    String errorSetName() default "default";
    ErrorSet[] includedSets() default {};
}

@Target({ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.SOURCE)

public @interface ErrorSet {
    String name() default "default";
    String path();
}

我有一个扩展AbstractProcessor的ErrorMapProcessor

@Generated
@Slf4j
@SupportedAnnotationTypes("com.company.dp.exceptions.annotation.ErrorMap")
@SupportedSourceVersion(SourceVersion.RELEASE_11)
@AutoService(Processor.class)
public class ErrorMapProcessor extends AbstractProcessor {
    //business logic
}

在我的 gradle 文件中添加了以下内容,

//Annotation Processor
    implementation project(':AnnotationProcessor')
    testAnnotationProcessor project(':AnnotationProcessor')
    annotationProcessor project(':AnnotationProcessor')

我能够构建这个项目并将这个 jar 添加到另一个项目的类路径(build.gradle)中。在将 ErrorMapProcessor 添加到类路径后,我还可以在不同的项目中使用它生成的类。

但是即使在将框架 jar 添加到类路径之后,我也无法在新项目中使用@ErrorMap@ErrorSet注释。如何为不同的项目启用 @ErrorMap 和 @ErrorSet?

标签: javaspring-bootannotationsspring-annotationsannotation-processor

解决方案


推荐阅读