我想通过AOP记录我的测试。我有类AspectLogger,我已经定义了切入点和建议。当我运行aspectj:test-compile时,在输出中我看到建议被添加到测试中。喜欢
[INFO] Join point 'method-execution(void Back_end_task.APITest.test())' in Type 'Back_end_task.APITest' (APITest.java:22) advised by before advice from 'AspectLogger' (AspectLogger.java:26)
但是当我在输出中运行mvn clean test
时,我会看到如下错误:
java.lang.NoSuchMethodError: AspectLogger.aspectOf()LAspectLogger;
at Back_end_task.APITest.test(APITest.java:23)
通过搜索这个问题,我发现我应该将我的项目添加为aspectj-maven-plugin的<aspectLibraries>
块的依赖项,并将我的项目的依赖项添加到pom的<dependencies>
块中.XML。但问题在于:
[FATAL] 'dependencies.dependency MyTraining:project:1.0-SNAPSHOT' for MyTraining:project:1.0-SNAPSHOT is referencing itself
这是我project
的链接请给我建议。我错过了什么?我做错了什么?我想学习如何使用方面。
答案 0 :(得分:0)
构建中的问题是您使用编译时编织,然后使用加载时编织代理运行测试。后者不是必需的。 This commit修复了您的构建:
--- pom.xml (revision 8aa7b98f5c6c15676580783c2f351c253212fbee)
+++ pom.xml (revision 72f37c4377b7189578f6afd5c45473efd8c63bc4)
@@ -89,12 +89,6 @@
<version>${aspectj.version}</version>
</dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
-
<!--<dependency>
<groupId>MyTraining</groupId>
<artifactId>project</artifactId>
@@ -156,9 +150,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
- <argLine>
- -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
- </argLine>
<systemProperties>
<property>
<name>allure.results.directory</name>
@@ -166,13 +157,6 @@
</property>
</systemProperties>
</configuration>
- <dependencies>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
- </dependencies>
</plugin>
<plugin>
我还在my GitHub fork的POM中改进了一些小东西,并为你创建了pull request。如果你愿意,可以接受它。