Maven + AspectJ + Clover

最近、仕事で Maven を触ることがあったのですが、AspectJ プラグインと Clover プラグインの両方を同時に使えませんでした。
原因は、AspectJ プラグインも Clover プラグインもソースファイルに対して独自のコンパイラ(Clover の場合はプリプロセッサのようなものですが)を起動し、処理を行なうため、うまくいっていませんでした。

そこで、Clover の出力したクラスファイルに対して AspectJ の処理を行なうことで*1Maven 上で Clover と AspectJ の共存を行ないました。
AspectJMaven プラグインは、最終的には AspectJ の Ant タスクを呼び出しているだけなので、Clover の出力ディレクトリをアスペクト対象に指定して*2AspectJ の Ant タスクを実行するように Maven.xml を記述しました。
Maven や jelly に詳しい人でしたら、プラグインの形で記述できるかと思います。

もっとも、AspectJ なんて使っている人はわずかかも知れませんが(汗

*1:AspectJJavaソースファイルだけでなく、.classファイルやjarファイルに対してもアスペクトの織り込みを行なえます

*2:inpath に指定したディレクトリ、あるいはjarファイル内のクラスがアスペクト対象とされる