微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将我的自定义注释处理器 jar 文件包含到我的其他 gradle 项目中?

如何解决如何将我的自定义注释处理器 jar 文件包含到我的其他 gradle 项目中?

我正在编写一个简单的 Java 应用程序,其中如果我使用自定义 @Log 注释进行注释,某些类应该打印消息“在 处找到 @Log 注释”。我正在尝试使用自定义注释处理器。为此,我编写了第二个项目,其中将包含我的自定义注释及其处理器,如下所示:

@SupportedAnnotationTypes ("Log")
@AutoService({Processor.class})
public class LogProcessor extends AbstractProcessor {
    @Override
    public SourceVersion getSupportedSourceVersion() {
        return SourceVersion.latestSupported();
    }

    @Override
    public boolean process(Set<? extends TypeElement> annotations,RoundEnvironment roundEnv) {
        for (TypeElement typeElement : annotations) {
            for (Element element : roundEnv.getElementsAnnotatedWith(typeElement)) {
                processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE,"found @Log annotation at " + element);
            }
        }
        return true;
    }
}

而我自定义的@Log注解代码如下:

@Target (ElementType.TYPE)
public @interface Log {}

我正在使用 @AutoService 注册注释处理器。如何包含在运行 gradle 构建时生成的 .jar 文件?我尝试了以下方法

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    annotationProcessor name:  'Annotationsupplier-1.0-SNAPSHOT'
}

dependencies {
    annotationProcessor files('/libs/Annotationsupplier-1.0-SNAPSHOT.jar')
}

但这不起作用,我不知道如何添加注释处理器 jar。我的期望是,在添加了 Annotationsupplier-1.0-SNAPSHOT 的情况下运行项目后,我应该能够在控制台中看到“在 处找到 @Log 注释”,而我不是。

解决方法

你可以试试这个作为解决方法:

implementation files('/path/to/custom-processor.jar')

annotationProcessor files('/path/to/custom-processor.jar')
,

对我来说,问题是通过在父项目下添加注释处理器模块(通过创建一个新模块)并在父项目 build.gradle 中添加以下内容来解决的:

dependencies {
    annotationProcessor project(':AnnotationProcessor')
    compile project(':AnnotationProcessor')
}

注 1:AnnotationProcessor 是我在父项目下创建的注释处理器模块的名称。

注意 2:我在 IntelliJ IDE 中执行此操作。

注意3:确保为项目开启注解处理

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。