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

时间:2016-06-25 01:33:32

标签: java annotations annotation-processing buck

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

package com.myproject.module1;

@Marker
public class SomeFoo {
  // ... code ...
}

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

package com.myproject.module1;

@Generated
public class SomeFoo$$Marker {
  // ... generated code ...
}

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

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

此模块包含另一个注释:

package com.myproject.module3;

@MarkerCollector
public class Bar {
}

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

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

我尝试使用注释处理器的Filer创建资源文件并编写所有生成文件的类名,但此资源文件也是如此,每个模块。< / p>

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

1 个答案:

答案 0 :(得分:0)

如果您正在使用gradle,则可以创建一个JavaCompile任务,并像here一样配置它。我的项目针对的是android,因此您将看到variant,只需确保将classPath放在那里?