使用 Maven 部署多个 Spring Boot 模块

Posted

技术标签:

【中文标题】使用 Maven 部署多个 Spring Boot 模块【英文标题】:Deploy multiple Spring Boot modules with Maven 【发布时间】:2016-09-17 14:04:18 【问题描述】:

我创建了两个独立的 maven 模块(我们称它们为 MODULE1MODULE2),它们是第三个集成模块 (SUPERMODULE) 的子模块。

MODULE1MODULE2 都是 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

如何在 Eclipse 上调试远程部署的 Spring Boot 应用程序和 Maven

maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器