配置exec maven插件以使用AOP';s aspectjweaver(javaagent)
使用Maven 3.6.3 对于一个简单的Java应用程序,关于AspectJ和JUnit,我有以下依赖项:配置exec maven插件以使用AOP';s aspectjweaver(javaagent),maven,maven-3,aop,aspectj,javaagents,Maven,Maven 3,Aop,Aspectj,Javaagents,使用Maven 3.6.3 对于一个简单的Java应用程序,关于AspectJ和JUnit,我有以下依赖项: <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${aspectj.version}&l
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
要点是:对于Main
执行,AOP不起作用,因为maven-surefire-plugin
用于测试。因此,添加了以下插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec.maven.plugin.version}</version>
<configuration>
<executable>java</executable>
<mainClass>${main.class}</mainClass>
<arguments>
<argument>-javaagent:${settings.localRepository}/org/.../aspectjweaver-${aspectj.version}.jar</argument>
</arguments>
</configuration>
</plugin>
它工作得很好,AOP正在按预期工作
完成研究后,必须在-cp
参数之前添加-javaagent:pathtothespectjweaverjar.jar
参数
当前问题场景:因此,通过Main
类及其(String[]args)
参数,我确认在当前插件配置中,-javaagent:paththespectjweaverjar.jar
参数是如何解释简单程序参数的
具体如下:
java -cp ./target/classes
com.manuel.jordan.Main
-javaagent:pathtotheaspectjweaverjar.jar <-- how a program argument parameter
java-cp./target/classes
com.manuel.jordan.Main
-javaagent:paththespectjweaverjar.jar Manuel,您有没有可能在GitHub上发布完整的文档?我想自己建立你的项目(或者一个较小的,匿名的,重现问题的版本)。原因可能是各种各样的:没有使用代理参数,加载了代理但没有找到方面,还有一些其他原因。我需要更多的细节并亲自查看,以帮助您解决这个问题。hello@kriegaex请参阅更新部分。谢谢你的评论谢谢你的更新Manuel。这当然很有帮助,但我真的不想从头开始重新创建整个设置,填充缺少的部分。所以我重复我对MCVE的要求。如果我有一个,你的问题可能已经解决了。
<aspectj>
<aspects>
<aspect name="com.manuel.jordan.aop.CalculatorAspect"/>
<weaver options="-verbose -showWeaveInfo">
<include within="*"/>
</weaver>
</aspects>
</aspectj>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec.maven.plugin.version}</version>
<configuration>
<executable>java</executable>
<mainClass>${main.class}</mainClass>
<arguments>
<argument>-javaagent:${settings.localRepository}/org/.../aspectjweaver-${aspectj.version}.jar</argument>
</arguments>
</configuration>
</plugin>
java -javaagent:pathtotheaspectjweaverjar.jar
-cp ./target/classes
com.manuel.jordan.Main
java -cp ./target/classes
com.manuel.jordan.Main
-javaagent:pathtotheaspectjweaverjar.jar <-- how a program argument parameter