7

2 つの Maven プロジェクトがあります。

  • 1 つ目は、アノテーションアノテーション プロセッサ、およびプロバイダ構成ファイルを定義して、ServiceLoader API を介してアノテーション プロセッサをトリガーします。
  • もう 1 つは最初のプロジェクトに依存し、いくつかのクラスとインターフェイスを定義します。そのうちの 1 つは、最初のプロジェクトで定義された注釈で注釈が付けられます。

mvn clean && mvn compileコンパイルが行われ、注釈処理が実行されることを確認するためだけに、(最初のプロジェクトをビルドしてインストールした後) で 2 番目のプロジェクトのビルドを呼び出します。期待どおりに動作します。単純な注釈プロセッサは、target/classes/ダミー データを含むディレクトリにリソース ファイルを生成するだけです。

を使用して情報を出力しようとするとprocessingEnv.getMessager().printMessage(...)、問題が発生し始めました。を使用Diagnostic.Kind.ERRORすると、予想どおり、ビルドが停止し、メッセージが出力されます。ただし、それ以外Kind(NOTEまたは などWARNING) では、メッセージは画面に書き込まれません

私の環境に関するいくつかの情報:

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

Apparently, this is a bug in maven-compiler-plugin that has not been fixed: MCOMPILER-66 - Compiler swallows messages from annotation processors.

于 2012-10-31T17:43:56.603 に答える