美文网首页springbootSpringBootSpring Boot 核心技术
第二十三章:SpringBoot项目多模块打包与部署

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

作者: 恒宇少年 | 来源:发表于2017-05-06 10:11 被阅读15021次

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

    本章目标

    打包部署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学习目录,感谢阅读!

    欢迎加入QQ技术交流群,共同进步。

    QQ技术交流群

    相关文章

      网友评论

      • b5936be3a394:你好 我按照你的方法 先对基类项目执行install之后 ,在对web项目执行package还是报错找不到相应的依赖基类 ???使用的是idea 这个怎么办啊
        恒宇少年:@奔跑_4ad7 你用maven还是springboot 构建的?
        b5936be3a394:@恒宇少年 不行 基类模块install成功了,本机的仓库也有jar,但是打包web的时候还是报错找不到相应的基类
        恒宇少年:@奔跑_4ad7 在工具右侧,Maven Project栏目->Lifecycle 你找到标有root的模块,双击clean、然后再install,尝试下是否可以
      • 小小机器人:谢谢朋友,那其实ssm框架的代码也是可以使用相同的方式来打包部署的吧?
        恒宇少年:@小小机器人 是的

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

      本文链接:https://www.haomeiwen.com/subject/mxsetxtx.html