首页 > 解决方案 > 有基于 gradle 标志的注释处理器忽略文件

问题描述

我有两个 gradle 项目(A,B),它们使用相同的注释处理器,问题是 A 恰好有它不需要的处理器的一部分。

有没有办法配置 gradle,以便注释处理器对 A 和 B 执行不同的操作?

我不想制作两个注释处理器,因为除了一小部分之外它们是相同的。(想像 2-3 行代码)

标签: javagradleannotation-processing

解决方案


我不知道 gradle,但在 maven 中,您可以通过以下方式传递编译时参数

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
                <generatedSourcesDirectory>${project.build.directory}/generated-sources/</generatedSourcesDirectory>
                <annotationProcessors>
                    <annotationProcessor>org.rapster.xxx.xxx.xxComponentProcessor</annotationProcessor>
                </annotationProcessors>
                <compilerArgs>
                   <arg>-Awidget=something</arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

此编译时间参数可以通过处理器的 init 函数中的以下代码段在您的注释处理器中读取

this.widget = processingEnv.getOptions().get("widget");

您可以使用此属性来执行某些条件操作。

我相信同样可以通过 gradle 完成


推荐阅读