如何通过Jenkins将多模块Spring Boot Maven应用部署至外部Tomcat容器
多模块Spring Boot项目Tomcat部署方案
核心选择结论
你当前的三个模块models、service-api、service-impl均为依赖型jar包,不存在独立的服务启动入口,完全可以打包为单个war包统一部署,不需要单独部署每个模块。只有当你后续把业务拆分为多个独立运行的微服务、每个服务需要单独迭代/扩缩容时,才需要分别构建部署。
单war打包配置步骤
- 新增一个专门的web启动模块,将该模块的pom.xml打包类型设置为
war,并在该模块中引入其他三个子模块的依赖 - 调整web模块的启动类,继承
SpringBootServletInitializer并重写configure方法,适配外部Tomcat部署:
@SpringBootApplication public class AppStarter extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(AppStarter.class); } public static void main(String[] args) { SpringApplication.run(AppStarter.class, args); } }
- 在web模块的web依赖中排除内置Tomcat,引入servlet-api依赖(scope设为provided):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>
- 在父pom的modules列表中添加新增的web模块
Jenkins构建部署配置
- 构建步骤执行
mvn clean package命令,构建完成后到web模块的target目录下提取生成的war包 - 部署步骤通过SSH插件将war包上传到外部Tomcat的webapps目录,重启Tomcat即可完成部署
内容的提问来源于stack exchange,提问作者Hrishi
相关产品推荐
相关产品推荐

