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

Maven exec:exec执行失败但exec:java成功,如何解决?

嘿,我来帮你搞清楚Exec Maven Plugin里exec:exec和exec:java这两个目标的区别,顺便解决你遇到的exec:exec报错问题~

核心差异:exec:java vs exec:exec

这俩目标的定位完全不同:

  • exec:java:直接在Maven本身的JVM进程里运行指定的Java主类,不需要启动新进程。你只要在插件配置里指定好<mainClass>,或者命令行传-Dexec.mainClass参数就能跑,这也是你用它正常的原因。
  • exec:exec:用来启动外部独立进程执行命令,它不局限于Java程序——可以是shell命令、脚本、其他语言的可执行文件等等。但它必须明确知道要执行的具体命令是什么,你现在的报错就是因为没指定,Maven默认去找名为exec的程序,而系统里根本没有这个命令,所以才抛出No such file or directory的异常。
解决你的exec:exec报错

要让exec:exec正常工作,你需要明确告诉它要执行的命令,有两种方式:

方式1:命令行直接指定

在运行命令时通过参数传递要执行的程序和参数,比如:

# 例子1:执行ls命令查看目录内容
mvn exec:exec -Dexec.executable="ls" -Dexec.args="-l /home/huang/Desktop/Project/Make/allnewmaker"

# 例子2:如果要运行Java程序(虽然这种情况用exec:java更方便)
mvn exec:exec -Dexec.executable="java" -Dexec.args="-cp target/classes com.yourpackage.YourMainClass"

方式2:在pom.xml里配置插件

把exec:exec的执行命令写在pom的插件配置里,这样每次直接跑mvn exec:exec就行:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.6.0</version>
      <executions>
        <execution>
          <id>run-custom-command</id>
          <goals>
            <goal>exec</goal>
          </goals>
          <configuration>
            <!-- 指定要执行的可执行文件/命令 -->
            <executable>ls</executable>
            <!-- 命令的参数列表 -->
            <arguments>
              <argument>-l</argument>
              <argument>/home/huang/Desktop/Project/Make/allnewmaker</argument>
            </arguments>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
该选哪个目标?
  • 如果只是运行你自己项目里的Java主类,优先用exec:java,它更简洁,不需要手动处理类路径这些细节。
  • 如果需要执行系统命令、shell脚本、Python脚本这类外部程序,就用exec:exec,它专门用来处理外部进程的调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:01:04