【发布时间】:2016-07-13 09:16:13
【问题描述】:
我正在开发一个基于多模块 maven 的项目,其中一个模块包含一些注释处理器,用于其他模块使用的自定义注释。当我将注释处理器模块的依赖项添加到任何其他模块时,该模块的注释由这些注释处理器处理。
但最近我集成了Checker Framework(用于类型注释),然后所有自定义注释处理器(我上面提到的)停止工作。非常感谢您对如何让它们与 Checker Framework 一起工作的任何想法?
要清除场景,
假设我有一个名为 module_A 的 maven 模块。在这个模块中,我有一个名为“@FoodItem”的注释(类级别)。我需要强制执行一个规则,即任何使用“@FoodItem”注释的类都应该实现接口“Food”。所以我在同一个模块(module_A)中编写了一个注释处理器“FoodItemAnnotationProcessor”,它处理这些类并检查是否符合该规则。
然后假设我有另一个名为 module_B 的模块,它对 module_A 具有 maven 依赖项。在这个模块中,我有一个名为“Pizza”的类,它带有“@FoodItem”注释。
如果使用上述配置构建项目(包含 module_A 和 module_B),“FoodItemAnnotationProcessor”会在编译阶段执行并验证“Pizza”类是否符合上述规则。
之后,我将 Checker 框架集成到 module_B(如 here 所述)。然后检查器框架相关的验证按预期在编译时执行,但“FoodItemAnnotationProcessor”停止工作。
【问题讨论】:
-
您能否提供有关您的设置的更多详细信息,或者(最好!)一个最小的工作示例?
-
添加场景描述
-
您引用的说明的第 3 步包括一个代码 sn-p 和注释
<!-- Add all the checkers you want to enable here -->。您是否在其中包含了 FoodItemAnnotationProcessor?
标签: java maven annotation-processing checker-framework