来自不同降压模块的注释处理器的汇总输出

Lio*_*ior 5 java annotations annotation-processing buck

我有一个由几个 BUCK 模块组成的项目。每个模块使用相同的注释处理器为每个注释类生成单个文件。为简单起见,对于每个带注释的类:

package com.myproject.module1;

@Marker
public class SomeFoo {
  // ... code ...
}
Run Code Online (Sandbox Code Playgroud)

将在同一个包中生成一个类:

package com.myproject.module1;

@Generated
public class SomeFoo$$Marker {
  // ... generated code ...
}
Run Code Online (Sandbox Code Playgroud)

假设我有两个这样的模块:module1module2

最后,我有一个 module3依赖于上述两个模块的。

该模块包含另一个注释:

package com.myproject.module3;

@MarkerCollector
public class Bar {
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用相同的注释处理器(也可以是一个单独的处理器)来生成一个引用所有先前生成的文件的类(由于类标记为@Marker.

问题是注释处理器分别为每个模块运行,当在模块 3 中运行时,注释处理器不会“看到”其他模块中生成的文件

我尝试使用注释处理器Filer创建一个资源文件并写入所有生成文件的类名,但是这个资源文件也是每个模块创建的。

聚合/访问来自不同模块的生成代码的最佳方法是什么?

moh*_*ssa 0

如果您正在使用 gradle,您可以创建一个JavaCompile任务并配置它,就像我在这里所做的那样。我的项目是针对 android 所以你会看到variant只要确保你把你的 classPath 放在那里