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

2020年5月9日 11点热度 0条评论

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

package com.myproject.module1;

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

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

package com.myproject.module1;

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

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

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

该模块包含另一个注释:

package com.myproject.module3;

@MarkerCollector
public class Bar {
}

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

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

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

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

解决方案如下:

如果您正在使用gradle,则可以创建JavaCompile任务,并像here一样配置它。我的项目以android为目标,因此您将看到variant,只需确保将classPath放在此处即可