我有一个由多个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放在此处即可