问题标签 [aspectj-maven-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1952 浏览

maven - Mockito 的间谍不能与使用 maven 的 AspectJ 一起工作

我有以下测试类,并且正在使用 Mockito 的间谍。通过使用 Eclipse 运行我的单元测试(右键单击->作为单元测试运行),所有测试都通过了,这意味着使用 m2e 和 AJDT 的 eclipse 构建过程可以正常工作。

但是,当我使用 maven 运行测试时,出现以下异常。

在带有 AJDT 的 Eclipse 中使用的 AJC 编译器和我的 AspectJ maven 插件配置之间有什么区别?我在这里缺少哪个配置或阶段?

这是我的 pom.xml:

更新:我还没有找到解决方案,但我知道为什么会这样。问题实际上在于覆盖 someMethod()。删除方法覆盖或注释掉 aspectj maven 插件可以解决该问题作为解决方法。我不能让 AspectJ 退出我的项目,所以我也必须模拟 someMethod() 而不覆盖它(例如使用 Mockito 本身)。它对我来说看起来像是一个错误,但我不太确定它来自 AspectJ 还是 Mockito。

0 投票
1 回答
2255 浏览

java - 为什么 aspectj 将我的测试文件夹中的 Aspects 编织到我的源类中(而不是测试类)?

我遇到了 aspectj-maven-plugin 和 Eclipse Juno 的一个奇怪问题。我的 pom 的构建部分中有以下插件 defn:

@Aspect我在我的 src/test/java/... 文件夹中 有一个声明。

如果我从命令行构建(即:mvn clean package),我的类将正确/按预期构建。

但是,当我从 Eclipse 中构建时,我的测试文件夹中声明的方面被编织到我的输出类文件夹 .class 文件中,而不是 test-classes 文件夹(通过使用反编译器确认)。

我的配置不正确吗?我的 Eclipse 项目中是否缺少一个设置来指示在编译时忽略这些方面?如果我在 Eclipse 中检查我的 Java Build 路径配置,我会看到 src/main/java -> target/classes 而 src/test/java-> target/test-classes。

这可能与配置的生命周期映射有关吗?我有:

我安装了 AJDT 1.7.3 (org.aspectj) 和 2.2.3 (org.eclipse.ajdt)(我不知道为什么它安装了这两个版本)。


更新 2

我将我的 Aspectj-maven-plugin 配置更新为以下配置并覆盖了 m2e 连接器设置,它似乎可以工作,但如果这适用于其他人,我希望进行第 3 方验证,因为它似乎依赖于编辑器/配置.

使用以下 m2e 配置覆盖 AJDT/m2e 0.14 框架附带的 m2e 连接器设置:org.eclipse.m2e 生命周期映射 1.0.0 org.codehaus.mojo aspectj-maven-plugin [1.7,) 编译 org.codehaus.mojo aspectj-maven-plugin [1.7,) 测试编译

如果这对其他人有效,下一步是尝试了解 m2e 连接器如何/为何失败,以及需要修复的位置。

我将我的测试代码(包括@kriegaex 测试项目)上传到我的 github 示例项目:github.com/benze/aspectj-maven-plugin-defect-example.git。根据自述文件,要启用/禁用覆盖 m2e-connector,请启用 override-m2e-lifecycle 配置文件。

0 投票
0 回答
127 浏览

maven - Maven插件中的aspectj无法调用切入点

A = 我写的 maven 插件

B = 使用 A 作为其构建过程的一部分的 maven 项目


当我使用 maven 构建 A 时,aspectj 按预期工作,并且我在单元测试期间达到了我的切入点。我使用 aspectj-maven-plugin 来构建它,因为我使用 maven 构建了 A。

问题是当我使用 maven 构建 B 并将 A 作为插件依赖项包含时,在构建过程中执行 A 时我没有命中我的切入点。

我尝试在 B 中包含 aspectj-maven-plugin 来解决这个问题,但没有运气。我还在 B 中尝试了各种形式的配置以尝试解决此问题。目前,我对 B 的配置如下:

0 投票
0 回答
267 浏览

java - Maven使用不同的jvm编译aspectj

我有一个使用 SwingUtilities2 的项目,该项目仅在 Java 5 中可用。我正在尝试使用较新的 JDK(使用 Jenkins)对其进行编译。仅涉及纯 Java 时,我没有任何问题,我只是将编译插件设置为:

哪里${jdk.path}指向 Java 1.5 JDK。

当尝试添加方面时,它总是使用默认的 jdk (1.8) 进行编译。

我也在尝试在 maven-compiler-plugin 中设置compilerId+ (请参阅: http ://maven.apache.org/plugins/maven-compiler-plugin/non-javac-compilers.html ),但也没有帮助。dependencies

任何线索如何做到这一点?

编辑:将 Jenkins 作业类型从 Maven 更改为 Free Style,并使用 JDK 1.5 调用它。现在用方面编译。

0 投票
1 回答
81 浏览

maven - aspectj-maven-plugin 的源代码丢失了吗?

这是对我之前的 codehaus 问题的一点跟进。这一次,我正在寻找 aspectj-maven-plugin 的来源。

我试过搜索 github.com,但我发现最接近的是 v1.7 的个人 fork

既然 codehaus 已经关闭,插件的所有源代码是否都丢失了?我也没有在 mojohaus 网站上找到任何有用的东西。

0 投票
1 回答
127 浏览

spring - 即使在为编译时编织添加 aspectj maven 插件后,自调用 AOP 问题仍然存在

我希望使用 AOP 登录我们的项目。我面临的问题是,如果一个类的方法在其中调用同一类的另一个方法,那么由于代理的做事方式,AOP 将无法在该调用上工作。为了解决这个问题,我正在尝试使用 aspectj maven 插件进行编译时编织。我的顶级项目 pom 如下所示:

我有 6 个子项目,但我希望只登录其中一个进行基于 AOP 的登录。该项目的 pom 如下所示:

我虽然这可以解决问题,但它仍在进行基于代理的方法调用。还需要做什么?

编辑:Spring context.xml 文件:

LoggingAspect.java

目标文件具有如下处理方法:

由于我已经评论了 autoproxy 部分,所以我说不要使用代理。但是,现在没有日志出现(无论是在调用 process 方法时还是在调用 internalMethod 时)。如果 autoproxy 开启,则 process method 会显示 log,但 internalMethod 不会显示 log,这是可以理解的。

0 投票
0 回答
236 浏览

spring - 在@Aspect 类的编译时编织中,@Autowired 依赖项为空

我在 Maven 项目中有一个方面类:my-aspect-project

我已经使用 aspectj-maven-plugin 在 maven 中进行编译时编织,如下所示

Aspect 按预期工作,并且每当调用带有 @Log 注释的方法时都会调用建议,但是在 aspect 中自动装配的 messageSource 为 null,因此未读取属性文件并且日志消息为 null。

我正在使用 spring boot 应用程序并且没有使用 xml。

我读了这个[ http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-aj-configure],我不确定这在我的情况下如何工作,

我试图在我的 Appconfig 中定义 bean,如下所示,

这也行不通。我还在 bean 方法 loggingAspect() 中添加了一个调试点,它根本没有被调用。

所以请告诉我,

1)如何使spring注释与我用@Aspect注释的方面类一起工作?

2)我还想使用弹簧配置文件来启用或禁用方面,并且由于弹簧注释在我的方面不起作用,我不知道如何使这项工作?

提前致谢

0 投票
0 回答
408 浏览

spring - AspectJ 编译时编织为只有参数构造函数的 spring bean 抛出 BeanInstantiationException

我在 Maven 项目中有一个方面类:my-aspect-project

我已经使用 aspectj-maven-plugin 在 maven 中进行编译时编织,如下所示

Aspect 按预期工作,并且每当调用带有注释的方法或类时都会调用建议@Log

我正在使用 spring boot 应用程序并且没有使用 xml。

我在我的 Appconfig 中定义了 bean,如下所示,以使 spring 将依赖项设置为方面并且它可以工作。

但是,如果一个带有@Log参数构造函数的类被注释,那么spring,在服务器启动时为带@Log注释的类抛出 BeanCreationException

例外:

0 投票
0 回答
25 浏览

aspectj - Spring-Data_Neo4j 高级映射不起作用

根据此用户指南,当使用高级映射模式时,对属性和关系的任何访问通常都会向下读取到数据库。这是否意味着不会获取整个对象,只会读取必要的属性?如我错了请纠正我。

我正在使用高级映射模式,这是我的 Maven 设置(仅显示必要的代码):

我的 Spring 配置运行良好,所以我只是跳过它并保存一些地方。

这里有点奇怪,当我访问 User 对象的 lover 属性的 name 属性时,它总是返回 null:

系统 println 结果为:

添加@Fetch 时:

事实证明是正确的:

有谁知道出了什么问题?谢谢

0 投票
1 回答
597 浏览

maven - AspectJ + Junit + Maven + Java8

我遵循了这个SO question并尝试为 java8 实现它。我的项目不是春季项目。

方面

JUnit 测试

POM.xml

我没有看到任何错误。我错过了什么吗?还是有什么错误的神器?当我运行 junit 测试时,我想要什么,所有方面都可以正常工作。