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

多模块Spring Boot项目中如何通过Maven并行启动所有Spring Boot应用

多模块Spring Boot项目中如何通过Maven并行启动所有Spring Boot应用

根据你的场景,确实有几种可行的方法来并行启动所有Spring Boot应用,不用一个个串行等待。下面是两种最适合你当前配置的方案:

方案一:用Spring Boot Maven插件的start/stop目标 + Maven并行构建

Spring Boot Maven插件提供了spring-boot:start和spring-boot:stop目标,其中start是非阻塞的(会把应用启动在后台),正好适合并行启动多个应用。

步骤:

  1. 确保端口不冲突:先确认每个应用的server.port在各自配置文件里设为了不同值,否则启动时会出现端口占用报错。
  2. 执行并行启动命令:
    这条命令会并行拉起所有6个应用,同时激活local配置(启用Docker Compose),自动构建依赖的模块:
    ./mvnw spring-boot:start -pl app1,app2,app3,app4,app5,app6 -am -T 6 -Dspring.profiles.active=local
    
    参数说明:
    • -pl app1,app2,...:指定要启动的6个应用模块
    • -am:自动构建这些模块依赖的所有前置模块(比如你的common模块)
    • -T 6:用6个线程并行执行(对应6个应用,也可以用-T 6C表示基于6核分配线程数)
    • -Dspring.profiles.active=local:激活local配置,启用application-local.yml里的Docker Compose开关
  3. 停止所有应用:
    当需要停止时,执行这条命令即可优雅关闭所有应用:
    ./mvnw spring-boot:stop -pl app1,app2,app3,app4,app5,app6
    
    插件会读取每个应用target目录下的PID文件,精准停止对应进程。

注意事项:

  • Docker Compose服务不会重复启动:第一个启动的应用会拉起共享服务(比如RabbitMQ),后续应用会自动检测到服务已运行,只启动自己专属的数据库服务(对应各自的profile),不会造成资源冲突。
  • 每个应用的application.yml要配置对应profile:比如app1的配置里docker.compose.profiles.active是rabbitmq,app1,app2的是rabbitmq,app2,确保启动时拉起正确的服务。

方案二:用Shell脚本批量后台启动(适合需要单独日志的场景)

如果你想更直观地管理每个应用的日志,或者需要自定义启动逻辑,可以写一个简单的Shell脚本,循环启动每个应用并后台运行。

示例脚本:

创建start-all-apps.sh文件:

#!/bin/bash

# 定义所有应用模块
APPS=("app1" "app2" "app3" "app4" "app5" "app6")

# 循环启动每个应用
for APP in "${APPS[@]}"
do
  echo "Starting $APP... Logs will be saved to $APP.log"
  # 启动应用,日志单独保存,后台运行
  ./mvnw spring-boot:run -pl "$APP" -am -Dspring.profiles.active=local > "$APP.log" 2>&1 &
done

# 等待用户停止信号
echo "All applications are starting in background. Press Ctrl+C to stop all apps..."
# 捕获Ctrl+C,自动杀掉所有Spring Boot启动进程
trap 'pkill -f "spring-boot:run"' INT
wait

使用方法:

  1. 给脚本添加执行权限:
    chmod +x start-all-apps.sh
    
  2. 运行脚本:
    ./start-all-apps.sh
    
  3. 停止所有应用:直接按Ctrl+C,脚本会自动终止所有启动的Spring Boot进程。

优点:

  • 每个应用的日志单独保存在app1.log、app2.log等文件中,方便单独排查问题
  • 启动和停止逻辑更直观,适合本地开发调试时快速操作

额外注意点

  • 端口唯一性:务必检查每个应用的server.port配置,避免端口冲突导致启动失败
  • 机器资源限制:如果你的机器内存/CPU有限,并行启动6个应用+多个Docker服务可能会卡顿,可适当减少并行线程数(比如-T 4)
  • 热部署支持:如果你用了Spring DevTools,两种方案都能正常支持热部署,修改代码后应用会自动重启

备注:内容来源于stack exchange,提问作者DJViking

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:29:29