第二十三章:SpringBoot项目多模块打包与部署

我们接上章节内容继续,上一章我们已经完成了多模块项目的创建以及运行,那我们线上环境该如何打包部署呢?

本章目标

打包部署SpringBoot多模块项目到外部运行Tomcat容器中。

构建项目

我们直接复制一份上一章的代码,如下图1所示:

图1

上图1 我们复制了chapter22项目源码,并且修改每个模块的pom.xml配置文件内的artifactId为chapter23。

Maven Install

我们如果现在直接执行pager子模块项目打包命令(maven package)maven会给我们提示没有找到所需要的user.jar因为我们的pager模块项目的pom.xml配置文件内引入了com.yuqiyu.user模块,如下图2所示

图2

在IDEA工具中给我们maven项目默认提供了常用到的命令我们直接使用就可以了,在项目的右侧有一个Maven Projects,如下图3所示:

图3

点击红色框焦点就会出现上图3所示的内容,展开任意一个Maven模块下都会存在三个模块Lifecycle(常用到的命令)、Plugins(插件)、Dependencies(项目部署所依赖的包列表)。

我们打包时一定要注意要从完全被依赖的项目开始

Bean Module Maven Install

因为我们的bean子项目是完全被依赖的,所以我们先从这个项目开始,点开Maven Projects后我们找到bean项目,展开Lifecycle选择 install命令双击开始执行打包,当我们执行maven install命令时会直接将我们工作空间内的项目直接生成jar包并且添加到本地maven仓库,这样我们在项目中就可以直接依赖使用,双击install命令后查看控制台输出日志,如下图4所示:

图4

可以看到我们的控制台已经输出了打包成功的日志,那我们直接去本地maven仓库查看是否已经存在,如下图5所示:

图5

可以看到已经在我们本地maven仓库存在,这样我们user模块就可以执行下面的打包操作,因为步骤一样我这里就不做一一解释了,同样的方式打包user项目(注意:所有被依赖都打包完成后才可以打包依赖项目)。

Pager Module Maven Package

所有的jar包依赖都执行打包完成后,我们开始进行pager项目的打包,因为我们的pager项目是一个web项目,我们只是需要生成后的war包部署到外部容器而已所以我们需要换一个命令package(打包到target目录下,并不会添加到maven仓库)

执行package命令后查看控制台日志输出,如下图6所示:

图6

我们可以看到控制台输出我们打包成功的日志,我们可以去target目录下查看已经有一个pager-1.0.0.war,打包的名称可以通过添加finalName参数修改,如下图7所示:

图7

先来执行clean命令后再执行package命令,这时target就会有一个pager.war存在。

统一打包方式

我们上面讲的是分步打包,我们完成可以在chapter23这个项目中执行maven package命令,这样所有的子模块以及父模块都会参与打包并且在在target目录下生成对应模块的jar或者war

点击Maven Projects选择chapter23执行命令clean,你就会发现所有项目的target目录都会被删除,下面我们来执行package命令查看效果如下图8所示:

图8

在控制台输出的内容与我们之前有所差异,我们在chapter23执行的package命令后maven会把chapter23本身以及所有的子模块项目都执行一遍package命令,并且你不需要考虑依赖问题,maven会自动去处理。

pager.war生成后复制到tomcat目录下的webapps内,运行tomcat访问就可以了,跟我们普通项目没有区别。

总结

以上内容就是本章的全部讲解,本章主要讲解了基于SpringBoot框架创建的多模块项目如何使用两种方式进行打包部署,当然建议使用第二种方式比较方便快捷不需要考虑依赖问题。

本章内容已经上传到码云

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringBoot 核心技术

第十七章:使用SpringSecurity让SpringBoot项目更安全

1714
来自专栏SpringBoot 核心技术

第十九章:使用JWT设计SpringBoot项目api接口安全服务JWT组成

1552
来自专栏SpringBoot 核心技术

第十六章:使用Redis作为SpringBoot项目数据缓存

1682
来自专栏学习力

《Java从入门到放弃》框架入门篇:Struts2的基本访问方式(二)

1404
来自专栏程序员的SOD蜜

在数据库上实现类似铁路售票锁票功能

要实现铁路售票那样的效果,如果有票查询到就锁定票,如果客人不购买再将票放回票池,这样可以保证前来买票的旅客只要查询到有票就一定能够买到票。我们可以通过给数据库增...

2416
来自专栏Java技术栈

Maven精选系列--介绍与安装

Maven介绍 Maven是一个项目管理工具,用来管理项目的生命周期,如项目中各个项目之间的依赖管理,项目中使用到的jar包依赖管理,还有许多项目构建的插件等。...

2517
来自专栏王二麻子IT技术交流园地

《SpringMVC从入门到放肆》三、DispatcherServlet的url-pattern配置详解

上一篇我们详细解释了一下SrpingMVC的执行流程以及一些默认的配置,在Spring的思想中,就是默认大于配置。今天我们来详细的研究一下DispatcherS...

3318
来自专栏用户画像

Maven安装与配置

 1、Maven下载 http://maven.apache.org/download.cgi 直接解压到一个目录 即可

602
来自专栏Dawnzhang的开发者手册

spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)

前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)...

1014
来自专栏张善友的专栏

自定义Unity 容器的扩展 --- Unity Application Block Event Broker

Unity快速入门的例子中有一个Block Event Broker通过对容器功能的扩展来实现事件截获,其中扩展的代码在项目EventBrokerExtensi...

18710

扫码关注云+社区