【发布时间】:2016-10-27 16:58:16
【问题描述】:
我有一个由几个 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。
问题在于注解处理器为每个模块单独运行,当在module3中运行时,注解处理器不会“看到”其他模块中生成的文件 .
我尝试使用注解处理器的Filer 创建一个资源文件并写入所有生成文件的类名,但是这个资源文件也是每个模块创建的。
从不同模块聚合/访问生成代码的最佳方式是什么?
【问题讨论】:
-
您找到解决方案了吗?我目前正在寻找与具有多个模块的 Android 项目相关的类似答案。我考虑过允许注释处理器生成每个文件,然后让 Gradle 任务将所有这些文件复制到顶层模块,然后对其进行注释以允许顶层模块将它们处理成一个统一的类。跨度>
标签: java annotations annotation-processing buck