如果您将AspectJ编译器与Aspect库(如Springs)一起使用,并且没有任何与特定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
。我似乎找不到排除一个方面的例子。
如果您准备列出要在某种白名单中使用的每个方面,则可以使用
ajc -xmlConfigured myConfig.xml ...
或相应的 AspectJ Maven 插件参数。为什么这没有列在 ajc 使用帮助中,我不知道。我以前从未使用过此选项,但现在刚刚对其进行了测试,可以确认它是否有效。它应该从 1.6.9 开始在 ajc 中,从 1.5 开始在 AspectJ Maven 中。
另请参阅此答案以获取更多信息和示例 XML 文件。此处还列出了一个最小示例。
请注意:必须明确指定选项和 XML 文件名。与 aop 不同.xml在 LTW 模式下,没有具有魔术名称的文件可以自动为 CTW 拾取。AspectJ维护者Andy Clement在这里提到了这一事实。
更新:我刚刚创建了一个错误票证,因为该参数未记录。
补充一点,有可能为aspectj-maven-plugin更改建议的日志级别DidNotMatch
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<artifactId>1.5</artifactId>
<configuration>
<Xlint>adviceDidNotMatch=error,noGuardForLazyTjp=ignore</Xlint>
</configuration>
</plugin>
可能的值:忽略/警告/错误
相关 JIRA: https://jira.codehaus.org/browse/MASPECTJ-126
更新
AFAIK,您只能添加外部方面来ajc
- aspectpath
将包括 jar 中的所有方面,因此无法添加带有方面的 jar 但排除某些方面,除非您解压缩、删除并创建一个新 jar。