如何在 Maven 中批量触发插件的所有 execution?

maven 不支持通过单条命令自动执行插件中定义的所有 ``,这是由其生命周期驱动的设计决定的;必须显式指定每个 execution id(如 `exec:java@first-execution`),官方明确表示该功能不会被加入。

在 Maven 的构建模型中, 是绑定到特定生命周期阶段(如 compile、package)的配置单元,而非独立可批量调用的“任务集合”。虽然你可以在 pom.xml 中为同一插件声明多个 (如上例中分别启动 FooServer 和 BarServer),但 Maven *不提供类似 `exec:java@或exec:java@all` 的通配符语法**来一次性触发全部 execution。

✅ 正确做法是显式列出所有目标 execution:

mvn exec:java@first-execution exec:jav

a@second-execution

⚠️ 注意事项:

  • 每个 exec:java@xxx 实际上是独立的 CLI 调用,Maven 会按顺序执行——前一个完成后才启动下一个;若需并发运行(如同时启动两个服务),需借助外部工具(如 & + wait、GNU Parallel)或改用 maven-antrun-plugin/自定义 Mojo。
  • 不要混淆 与 goal>:即使多个 execution 共享同一 goal(如 exec:java),Maven 也不会自动聚合它们;goal 是插件能力,execution 是具体实例化配置。
  • 若频繁需要多服务联调,更推荐将启动逻辑提取到脚本(如 start-servers.sh)或使用 spring-boot-maven-plugin 的 run 目标配合 profiles 分离配置。

? 总结:Maven 的设计哲学强调明确性与可重现性——自动执行“所有 execution”会模糊构建意图、降低可维护性,因此社区已明确拒绝该特性(参见 Maven PR #357)。坚持显式声明,既是规范,也是最佳实践。