You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置exec-maven-plugin使AspectJ切面在主程序运行时生效?

解决exec-maven-plugin启动时AspectJ AOP不生效的问题

我完全懂你的困扰——你已经通过终端手动执行验证了正确的命令格式,但用exec-maven-plugin时,-javaagent参数被错误地当成了程序参数(跟在主类后面),导致AspectJ的织入逻辑没触发。

问题根源

exec-maven-plugin的<arguments>标签是用来配置传递给main方法的程序参数,而不是JVM启动参数。你需要把-javaagent这类JVM级别的参数放到专门的<jvmArguments>标签里,它会被插件解析成java命令的前置参数,和你手动执行的顺序一致。

修正后的exec-maven-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>
    <!-- 把JVM参数放到这里,而不是<arguments> -->
    <jvmArguments>
      -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
    </jvmArguments>
  </configuration>
</plugin>

补充说明

这样配置后,exec插件实际执行的命令就会和你在终端手动运行的格式完全一致:

java -javaagent:path/to/aspectjweaver.jar -cp ./target/classes com.manuel.jordan.Main

-javaagent参数会被放在最前面作为JVM启动参数加载,AspectJ的织入逻辑就能正常对主程序的类生效了。

如果你还有需要传递给main方法的程序参数,依然可以放在<arguments>标签里,插件会自动区分JVM参数和程序参数的顺序,不会产生冲突。

内容的提问来源于stack exchange,提问作者Manuel Jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:32:36