4

Springs などの Aspect ライブラリで AspectJ コンパイラを使用し、特定の Aspect に一致するクラスがない場合は、次のようになります。

[WARNING] advice defined in org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect has not been applied [Xlint:adviceDidNotMatch] 

しかし、この特定のプロジェクトでは、この側面だけでなく他の側面も必要ありません。

-Xlint で警告を設定できるようですが、一致しないアドバイスの警告をすべてオフにすることしかできないようです ( adviceDidNotMatch=ignore)。私が本当にやりたいのは、 などの特定の側面を除外することですorg.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect。アスペクトを除外する例が見つからないようです。

4

3 に答える 3

2

ある種のホワイトリストで使用される各側面をリストする準備ができている場合は、次を使用できます

ajc -xmlConfigured myConfig.xml ...

または対応するAspectJ Maven プラグイン パラメータこれがajcの使用法のヘルプに記載されていない理由はわかりません。これまでこのオプションを使用したことはありませんでしたが、今テストしたところ、機能することが確認できました。1.6.9以降は ajc に、1.5 以降はAspectJ Mavenにあるはずです。

詳細とサンプル XML ファイルについては、この回答も参照してください。最小限のサンプルもここにリストされています。

注:オプションと XML ファイル名は明示的に指定する必要があります。LTW モードのaop.xmlとは異なり、CTW 用に自動的に取得されるマジック ネームを持つファイルはありません。この事実については、AspectJ のメンテナである Andy Clementがここで言及しています。

更新:パラメータが文書化されていないため、バグ チケットを作成しました。

于 2014-12-12T00:43:15.527 に答える
0

アップデート

私の知る限り、外部アスペクトのみをajcwithに追加できaspectpathます。これには、jar 内のすべてのアスペクトが含まれます。そのため、アスペクトを含む jar を追加する方法はありませんが、新しい jar を解凍、削除、作成しない限り、一部を除外することはできません。

于 2014-12-11T00:13:10.100 に答える