4

如果您将 AspectJ 编译器与诸如 Springs 之类的 Aspect 库一起使用,并且您没有任何与特定 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

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

于 2015-04-22T10:21:32.077 回答
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

更新

AFAIK,您只能向ajcwith 添加外部方面 -aspectpath这将包括 jar 中的所有方面,因此除非您解压缩、删除并创建一个新 jar,否则无法添加带有方面但不包括某些方面的 jar。

于 2014-12-11T00:13:10.100 回答