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

问题描述 投票:0回答:3

如果您将 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
。我似乎找不到排除某个方面的示例。

spring maven aspectj spring-aspects
3个回答
3
投票

如果您准备列出要在某种白名单中使用的每个方面,则可以使用

ajc -xmlConfigured myConfig.xml ...

或相应的AspectJ Maven插件参数。为什么这没有在 ajc 使用帮助中列出,我不知道。我以前从未使用过此选项,但现在刚刚测试它并可以确认它是否有效。从 1.6.9 开始它应该在 ajc 中,从 1.5 开始应该在 AspectJ Maven 中。

另请参阅此答案以获取更多信息和示例 XML 文件。 此处还列出了最小样本。

请注意: 必须明确指定选项和 XML 文件名。与 LTW 模式中的 aop.xml 不同,CTW 不会自动选取具有神奇名称的文件。 AspectJ 维护者 Andy Clement here 提到了这一事实。

更新: AJC 选项

-xmlConfigured
现已记录在此处


3
投票

补充一下,可以更改aspectj-maven-plugin的adviceDidNotMatch的日志级别

<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


0
投票

更新

AFAIK,您只能使用 -

ajc
将外部方面添加到
aspectpath
,这将包括 jar 中的所有方面,因此无法添加包含方面但排除某些方面的 jar,除非您解压缩、删除并创建一个新罐子。

© www.soinside.com 2019 - 2024. All rights reserved.