【问题标题】:Aggregate output from Annotation Processors of different buck modules来自不同降压模块的注释处理器的聚合输出
【发布时间】: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 ...
}

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

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

此模块包含另一个注释:

package com.myproject.module3;

@MarkerCollector
public class Bar {
}

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

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

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

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

【问题讨论】:

  • 您找到解决方案了吗?我目前正在寻找与具有多个模块的 Android 项目相关的类似答案。我考虑过允许注释处理器生成每个文件,然后让 Gradle 任务将所有这些文件复制到顶层模块,然后对其进行注释以允许顶层模块将它们处理成一个统一的类。跨度>

标签: java annotations annotation-processing buck


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2022-10-18
    • 2020-07-10
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    相关资源
    最近更新 更多