第二十三章: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学习目录,感谢阅读!

更多干货文章扫码关注微信公众号

扫码关注 - 专注分享

加入知识星球,恒宇少年带你走以后的技术道路!!!

微信扫码加入

猜你喜欢

转载自blog.csdn.net/weixin_42033269/article/details/80086692