maven 不支持通过单条命令自动运行 pom.xml 中定义的所有
在 Maven 的设计哲学中,构建过程严格围绕生命周期(Lifecycle)、阶段(Phase) 和 目标(Goal) 展开。插件的
你提供的配置片段中,两个
mvn exec:java@first-execution exec:java@second-execution
⚠️ 注意:该命令本质是并行执行两个独立的目标调用(Maven 3.3.1+ 支持多目标语法),而非“批量扫描并运行所有 execution”。它要求你手动列出每个 execution.id,无法通配或模糊匹配(如 “所有 exec:java 执行” 或 “所有 ID 以 server- 开头的 execution”)。
官方立场非常明确:Apache Maven GitHub PR #357 中,项目负责人 Robert Scholte 明确指出:
“Maven is lifecycle driven. Being able to execute a goal from commandline is a feature, but I don't see the need to execute all available executionIds.”
这意味着:
✅ 总结:Maven 的设计拒绝“无上下文的批量执行”,强调可预测性与可重现性。若需同时启动多个服务(如微服务本地联调),更健壮的方式是——将其整合进一个集成测试阶段,或借助外部编排工具(如 Docker Compose、Gradle 多项目),而非试图绕过 Maven 的生命周期模型。