使用 Maven 部署多个 Spring Boot 模块
Posted
技术标签:
【中文标题】使用 Maven 部署多个 Spring Boot 模块【英文标题】:Deploy multiple Spring Boot modules with Maven 【发布时间】:2016-09-17 14:04:18 【问题描述】:我创建了两个独立的 maven 模块(我们称它们为 MODULE1
和 MODULE2
),它们是第三个集成模块 (SUPERMODULE
) 的子模块。
MODULE1
和 MODULE2
都是 Spring Boot Web 应用程序。我想要实现的是通过SUPERMODULE
启动(而不是构建)两个项目/网络应用程序。
在我看来,有两种选择:
-
将它们部署到同一个 tomcat 服务器(可能是更好、更有趣的解决方案)
将它们部署到具有不同端口的不同 tomcat 服务器
我发现没有可行的示例来实现这些选项中的任何一个(...通过单个 maven 集成项目)。因此,如果有人能指出我正确的方向,我会很高兴 - 或者这两种可能性都是不好的做法?
【问题讨论】:
"或者这两种可能性都是不好的做法?"这取决于。如果您正在谈论从本地机器\开发环境进行部署,那么可以。或者,如果您尝试使用构建服务器推出,那么这可以通过多种方式工作。 maven wagon 插件立即浮现在脑海中。 【参考方案1】:你说:
将它们部署到同一个 tomcat 服务器
(1)Build automation software
任何构建自动化工具(Jenkins、bamboo...)都可以让您创建一个作业,将您的战争部署到 tomcat(同一服务器或不同服务器,您可以根据需要设置您的作业)。
您使用自动化软件吗?我相信这将是最好的解决方案/最佳实践。
(2) 构建 EAR - 部署到 Tomee
你说:
我想要实现的是启动(而不是构建)两个项目/网络 应用程序通过 SUPERMODULE。
你真正描述的是一个耳朵!
我将描述这个想法,但是,Spring boot 似乎不能很好地与 EAR 配合使用:Spring Boot EAR Packaging 和 https://github.com/purple52/spring-boot-ear-skinny-war
由于您的 2 个子模块是 spring boot 应用程序,您可以:
将子模块构建为 WAR 让你的超级模块构建一个 EAR 在 EAR 中包含两个 WAR(maven 依赖项) 这然而暗示您使用(例如)Tomee 而不是 tomcat(这是您的选择吗?)。 如上所述,经过一些研究,似乎 spring-boot 战争在打包到 EAR 中时不起作用。SpringServletContainerInitializer
没有被调用。所以目前这不是一个选择。
【讨论】:
以上是关于使用 Maven 部署多个 Spring Boot 模块的主要内容,如果未能解决你的问题,请参考以下文章
spring boot(十六)使用Jenkins部署spring boot
使用 Maven 部署 Spring-Boot 项目并进一步将其导入其他项目
Spring Boot使用Maven工具自动重启SpringBoot项目 | 热部署
springboot(十六):使用Jenkins部署Spring Boot