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

如何配置exec-maven-plugin使其目标在Maven的package阶段触发执行

问题核心原因

你将exec-maven-plugin的完整配置放在了<pluginManagement>标签中,该标签的作用是声明可跨子模块复用的插件通用配置,本身不会在当前模块的构建生命周期中激活插件,因此你绑定到package阶段的执行逻辑不会自动触发。
直接执行mvn exec:exec能生效是因为命令行手动指定了执行插件目标,会自动匹配全局的插件配置。

修复步骤

  1. 移除<dependencies>节点中exec-maven-plugin的依赖声明,Maven插件不需要作为项目依赖引入。
  2. 在<build>节点下新增独立的<plugins>节点(不要嵌套在<pluginManagement>内),将exec-maven-plugin的配置移入该节点,或仅声明插件坐标继承pluginManagement中的配置即可。

修正后的build节点示例

<build>
  <pluginManagement>
    <plugins>
      <!-- 其他插件的通用配置保留在此处 -->
      ...
    </plugins>
  </pluginManagement>
  <!-- 新增的plugins节点,用于激活当前模块需要执行的插件 -->
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>3.0.0</version>
      <executions>
        <execution>
          <id>Create Executable</id>
          <phase>package</phase>
          <goals>
            <goal>exec</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <executable>${project.basedir}/scripts/make_rmqcm.bat</executable>
        <arguments>
          <!-- 建议统一路径分隔符,Windows下可统一用\,跨平台推荐用/ Maven会自动适配 -->
          <argument>${project.basedir}/scripts/executable_java_stub.sh</argument>
          <argument>${project.build.directory}/${project.build.finalName}.jar</argument>
          <argument>${project.build.directory}/${project.name}</argument>
        </arguments>
      </configuration>
    </plugin>
  </plugins>
</build>

验证

修改完成后执行mvn clean package,即可在构建的package阶段自动触发脚本执行,生成目标可执行文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:45:08