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

Bru*_*eis 7 java maven annotation-processing

我有两个Maven项目:

  • 第一个定义注释,注释处理器提供者配置文件,以通过ServiceLoader API触发注释处理器.
  • 另一个依赖于第一个并定义了一些类和接口,其中一个用第一个项目中定义的注释进行注释.

我调用第二个项目的构建(在构建并安装第一个项目之后)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
Run Code Online (Sandbox Code Playgroud)

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

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

Bru*_*eis 5

显然,这是maven-compiler-plugin中的一个尚未修复的错误:MCOMPILER-66 - 编译器吞下来自注释处理器的消息.


dan*_*iel 5

尝试添加以下行:

<configuration>
  <showWarnings>true</showWarnings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我尝试了POM Property` <maven.compiler.showWarnings> true </maven.compiler.showWarnings>`它也有效. (2认同)