7

我有两个 Maven 项目:

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

我用 调用第二个项目的构建(在构建并安装了第一个项目之后)mvn clean && mvn compile,只是为了确保编译将发生并且注释处理将运行。它按预期工作:简单的注释处理器只是在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启动注解处理器)

4

2 回答 2

5

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

于 2012-10-31T17:43:56.603 回答
5

尝试添加以下行:

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

进入项目的 pom.xml 中的 maven 编译器插件定义。这个解决方案对我有用。

见: https ://gist.github.com/esamson/0777b97adde4c2f9bc31

于 2017-03-16T23:09:47.950 回答