注释处理器上具有级别Diagnostic.Kind.NOTE(和其他)的消息

时间:2012-10-31 05:17:32

标签: java maven annotation-processing

我有两个Maven项目:

  • 第一个定义注释注释处理器提供商配置文件,以通过ServiceLoader API触发注释处理器。< / LI>
  • 另一个取决于第一个并定义了一些类和接口,其中一个使用第一个项目中定义的注释进行注释

我使用mvn clean && mvn compile调用第二个项目的构建(在构建并安装第一个项目之后),以确保编译将发生并且注释处理将运行。它按预期工作:简单的annontation处理器只在target/classes/目录中生成一个包含一些虚拟数据的资源文件。

当我尝试使用processingEnv.getMessager().printMessage(...)输出一些信息时,我开始遇到麻烦。如果我使用Diagnostic.Kind.ERROR,则构建停止并打印消息,正如我所料。但是,与任何其他Kind(例如NOTEWARNING),消息不会写在屏幕上

有关我的环境的一些信息:

Kubuntu 12.10
Linux 3.5.0-17-generic
Apache Maven 3.0.4 (r1232337; 2012-01-17 06:44:56-0200)
Java version: 1.7.0_09, vendor: Oracle Corporation

我没有在任何地方明确声明maven-compiler-plugin的版本,所以必须使用默认版本(2.3.2?我不确定)。

如何在此设置中启用所有Kind消息的输出? (即通过maven启动annontation处理器)

2 个答案:

答案 0 :(得分:5)

显然,这是maven-compiler-plugin中的一个尚未修复的错误:MCOMPILER-66 - Compiler swallows messages from annotation processors

答案 1 :(得分:5)

尝试添加以下行:

<configuration>
  <showWarnings>true</showWarnings>
</configuration>

进入项目pom.xml中的maven compiler-plugin定义。这个解决方案适合我。

请参阅: https://gist.github.com/esamson/0777b97adde4c2f9bc31