首页 > 解决方案 > 根据来自另一个模块的注释在一个模块中生成代码

问题描述

我正在尝试制作一个注释处理器来处理一些名为 GenerateRepository 的注释并在一个名为 server 的模块中运行该处理器。该服务器模块依赖于一个公共模块,该模块是使用此 GenerateRepository 注释对类进行注释的地方。我的问题是,有没有办法让处理器在依赖项上运行?我正在使用 Gradle 来管理依赖项和 IntelliJ。

到目前为止,我所拥有的是以下内容:

处理器模块,其中定义了注释和处理器类。处理器尝试将生成的类文件写入名为“repo”的包中,该包位于服务器模块中

公共模块,其中定义了一个域类,例如下面的一个

@GenerateRepository
public class A{
...
}

服务器模块,我希望处理器在其中运行并将生成的文件放入“repo”包中

gradle 构建如下所示:

dependencies {
    compile project(':common')
    annotationProcessor project(':processor')
}
dependencies {
    compile project(":processor")
}
allprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    group 'org.chair-fight'
    version '1.0-SNAPSHOT'

    sourceCompatibility = JavaVersion.VERSION_15

    idea.module.scopes.PROVIDED.plus += [configurations.annotationProcessor]
}

问题主要是当我构建项目时,处理器不查看服务器模块的依赖项,只查看服务器模块。我想要的是让它也在依赖项中的类上运行

标签: javagradleannotation-processing

解决方案


推荐阅读