0

0

如何部署多模块 Spring Boot Maven 项目?

心靈之曲

心靈之曲

发布时间:2026-02-09 10:34:02

|

901人浏览过

|

来源于php中文网

原创

如何部署多模块 Spring Boot Maven 项目?

本文详解多模块 spring boot 项目的正确构建与独立部署策略,涵盖模块间依赖处理、各模块独立启动(不同端口)、生成多个可执行 jar 包,以及在 aws 等云平台上的主流部署方案。

在典型的多模块 Spring Boot 项目中(如 Module-A、Module-B、Module-C),每个子模块均标注 @SpringBootApplication 并配置独立端口(如 8080/8200/8300),且存在显式依赖关系(例如 Module-B 依赖 Module-A),这本质上是多个逻辑解耦的微服务应用,而非单体聚合应用。因此,不应也不可打包为“一个 JAR 并同时启动所有主类”——Spring Boot 不支持单个 JVM 中并行运行多个 SpringApplication.run() 实例(会引发端口冲突、上下文重名、Bean 注册冲突等严重问题)。

✅ 正确构建方式:模块化打包,各自为政

父 POM(Main-Module/pom.xml)应声明为 pom,并使用 显式声明子模块:


pom

    Module-A
    Module-B
    Module-C

各子模块(如 Module-B)需继承父 POM,并显式声明 spring-boot-starter-parent 作为 parent 或通过 统一版本,同时添加 spring-boot-maven-plugin:



    com.example
    Main-Module
    1.0.0

Module-B
jar


    
        com.example
        Module-A
        ${project.version} 
    
    
        org.springframework.boot
        spring-boot-starter-web
    



    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
    

执行 mvn clean package 后,将在各子模块的 target/ 目录下生成三个独立的可执行 JAR 文件(如 Module-A-1.0.0.jar、Module-B-1.0.0.jar、Module-C-1.0.0.jar),每个均可通过 java -jar 单独启动:

迷你天猫商城
迷你天猫商城

迷你天猫商城是一个基于Spring Boot的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为迷你天猫商城的核心组成部分之一,天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。所有页面均兼容IE10及以上现代浏览器。部署方式1、项目

下载
# 分别启动(确保端口不冲突)
java -jar Module-A/target/Module-A-1.0.0.jar  # 默认或配置端口 8080
java -jar Module-B/target/Module-B-1.0.0.jar  # 配置端口 8200
java -jar Module-C/target/Module-C-1.0.0.jar  # 配置端口 8300
⚠️ 关键注意事项: 禁止在父模块中添加 spring-boot-maven-plugin —— 否则会导致构建失败或生成空/无效包;插件必须置于每个含 @SpringBootApplication 的子模块中。 子模块间依赖应使用 compile(默认),避免 provided 或 test 导致运行时类缺失。 各模块的 application.yml/application.properties 必须独立配置 server.port,推荐通过 application-{profile}.yml + 激活 profile 实现环境隔离。

☁️ 云平台部署推荐方案(以 AWS 为例)

由于是多个独立服务,部署必须按服务粒度进行,而非整体打包。AWS 提供多种成熟路径:

方案 适用场景 关键优势 参考文档
AWS Fargate (ECS) 推荐首选。容器化部署,免运维集群 无需管理 EC2 实例;自动扩缩容;天然支持多服务隔离与网络通信 Deploy Java Microservices on ECS with Fargate
Elastic Beanstalk 快速验证、CI/CD 初期 托管 Tomcat/Java SE 运行时;一键部署单个 JAR;支持负载均衡与健康检查 Deploy Spring Boot on Elastic Beanstalk
EC2 自托管 需完全控制 OS/网络/安全策略 灵活性最高;可配合 systemd 管理多进程(如 systemd service files 分别守护各 JAR) 需自行编写部署脚本与监控

? 实践提示:无论选择哪种云方案,务必为每个模块构建独立的部署单元(Fargate Task Definition、EB Application Version、EC2 Systemd Service)。切勿尝试将三个 JAR 打包进同一容器或同一 EB 应用——这违背微服务设计原则,且极易引发端口、日志、配置混乱。

✅ 总结

  • 多 @SpringBootApplication 子模块 = 多个独立 Spring Boot 应用,必须分别构建、分别部署、分别运行
  • 父 POM 仅作依赖/版本协调,子模块各自启用 spring-boot-maven-plugin 生成可执行 JAR;
  • 云部署应基于服务维度选型:Fargate 适合生产级容器编排,Elastic Beanstalk 适合快速上手,EC2 适合深度定制;
  • 始终遵循 “Single Responsibility” 原则——一个 JAR,一个进程,一个端口,一个职责。

遵循此范式,即可稳健支撑从本地开发到云上生产的全链路多模块 Spring Boot 微服务部署。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

114

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

170

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

98

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

166

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

154

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

199

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

236

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

165

2024.02.23

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

98

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3.4万人学习

C# 教程
C# 教程

共94课时 | 9万人学习

Java 教程
Java 教程

共578课时 | 61.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号