第二十三章: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 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

备份VMware虚拟磁盘文件 移植到其他虚拟机

原文:http://jingyan.baidu.com/article/a681b0de17b3173b1843468f.html

3892
来自专栏闻道于事

Spring Boot 结合 Redis 缓存

1870
来自专栏技术博文

php缓存技术

1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系 统中比较常见,...

1.4K6
来自专栏维C果糖

利用 SSH 完成 Git 与 GitHub 的绑定

在「史上最简单的 GitHub 教程」中,我们已经对 GitHub 有了一定的了解,包括创建仓库、拉分支,或者通过Clone or download克隆或者下载...

3639
来自专栏Jerry的SAP技术分享

如何在ubuntu上安装virtualbox的driver module vboxdrv

干净的ubuntu安装完毕之后是没有vboxdrv这个driver module的。

3784
来自专栏码神联盟

IntelliJ系列 ③ | IDEA 之 配置JDK 的 4种方式

5483
来自专栏Albert陈凯

MacOS系统Maven的安装并配置到IntelliJ IDEA

首先去下载最新版 http://maven.apache.org/download.cgi 我下载的是 http://mirror.bit.edu.cn/a...

3284
来自专栏Young Dreamer

node.js如何制作命令行工具(一)

之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务。比如Fis3,可以通过fis3 server start 开启fis的静态文件...

2949
来自专栏Linux运维学习之路

NFS存储服务部署

什么是NFS 中文意思是网络文件系统,主要功能是通过网络(一般是局域网)让不同主机之间可以共享文件或目录 NFS属于本地文件存储服务  缺点1: windows...

6329
来自专栏北京马哥教育

原创投稿 | Zabbix的编译安装并发送通知邮件

1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的环境是LAMP。以及实现简单的监控任务,在发...

3918

扫码关注云+社区

领取腾讯云代金券