您如何忽略Maven某些方面的AspectJ编译器警告



如果您将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。

最新更新