一、创建聚合父工程
1.首先使用 Spring Initializr 来快速创建好一个Maven工程。然后删除无关的文件,
只需保留pom.xml 文件。
复制代码
然后在 pom.xml 里面声明该父工程包含的子模块。(其它信息就不逐一讲述了,
诸如继承SpringBoot官方父工程以及统一依赖管理 请查看下面的注释说明)注意:这里可以不统一管理依赖的版本号,在模内部自己定义,如有引入其他模块,也要指定
版本信息<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 基本信息 --><description>SpringBoot 多模块构建示例</description><modelVersion>4.0.0</modelVersion><name>springboot-integration</name><packaging>pom</packaging><!-- 项目说明:这里作为聚合工程的父工程 --><groupId>com.hehe</groupId><artifactId>springboot-integration</artifactId><version>1.0.0.RELEASE</version><!-- 继承说明:这里继承SpringBoot提供的父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.7.RELEASE</version><relativePath/></parent><!-- 模块说明:这里声明多个子模块 --><modules><module>mm-web</module><module>mm-service</module><module>mm-repo</module><module>mm-entity</module></modules><!-- 版本说明:这里统一管理依赖的版本号 --><dependencyManagement><dependencies><dependency><groupId>com.hehe</groupId><artifactId>mm-web</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-repo</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.42</version></dependency></dependencies></dependencyManagement></project>复制代码

二、创建子模块(module)

注:这里是使用IDEA来创建子模块,使用Eclipse的小伙伴可通过
Spring Initializr 构建,然后复制去进去父工程根目录即可。1.对着父工程右键 - New - Module - > 输入 mm-web
2.对着父工程右键 - New - Module - > 输入 mm-service
3.对着父工程右键 - New - Module - > 输入 mm-repo
4.对着父工程右键 - New - Module - > 输入 mm-entity
1~4 步骤完成后,分别调整它们的pom.xml 以继承上面的父工程。注意:Artifact id和Project name保持一致,Package name设置时把_用.分开
复制代码
例如mm-web模块的pom.xml 需要改造成这样:<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 基本信息 --><groupId>com.hehe</groupId><artifactId>mm-web</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mm-web</name>
//---------------------------------------------添加<!-- 继承本项目的父工程 --><parent><groupId>com.hehe</groupId><artifactId>springboot-integration</artifactId><version>1.0.0.RELEASE</version></parent>
//---------------------------------------------添加<!-- Web模块相关依赖 --><dependencies><dependency>//-------------------------依赖其他模块<groupId>com.hehe</groupId><artifactId>mm-service</artifactId></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-entity</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>复制代码

三、编写子模块代码

四、运维部署(多模块打包)

1. 添加打包插件
注意:多模块项目仅仅需要在启动类所在的模块添加打包插件即可!!
不要在父类添加打包插件,因为那样会导致全部子模块都使用
spring-boot-maven-plugin的方式来打包(例如BOOT-INF/com/hehe/xx),
而mm-web模块引入mm-xx 的jar 需要的是裸露的类文件,即目录格式为(/com/hehe/xx)。
复制代码

本案例的启动模块是 mm-web , 只需在它的pom.xml 添加打包插件(spring-boot-maven-plugin):

<!--多模块打包:只需在启动类所在模块的POM文件:指定打包插件 --><build><plugins><plugin><!--该插件主要用途:构建可执行的JAR --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
复制代码

四、总结

1.模块化编程参考博客
2.对于父工程

1. 可以删除src目录,.mvn目录
2. 配置要修改<packaging>jar</packaging> => <packaging>pom</packaging>
添加:<!-- 模块说明:这里声明多个子模块 --><modules><module>wm-web</module><module>wm-service</module></modules>
删除部分:<build><plugins><!--<plugin>--><!--<groupId>org.springframework.boot</groupId>--><!--<artifactId>spring-boot-maven-plugin</artifactId>--><!--</plugin>--></plugins></build>
复制代码

3.对于子模块

替换父模块配置<!--<parent>--><!--<groupId>org.springframework.boot</groupId>--><!--<artifactId>spring-boot-starter-parent</artifactId>--><!--<version>2.1.0.RELEASE</version>--><!--<relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;--><!--</parent>-->到<!-- 继承本项目的父工程 --><parent><groupId>com.example</groupId><artifactId>module</artifactId><version>0.0.1-SNAPSHOT</version></parent>设置依赖的其他模块<!-- 继承本项目的父工程 --><dependency><groupId>com.example</groupId><artifactId>wm-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency>对于提供公共服务的模块需要注释:<build><!--<plugins>--><!--&lt;!&ndash;<plugin>&ndash;&gt;--><!--&lt;!&ndash;<groupId>org.springframework.boot</groupId>&ndash;&gt;--><!--&lt;!&ndash;<artifactId>spring-boot-maven-plugin</artifactId>&ndash;&gt;--><!--&lt;!&ndash;</plugin>&ndash;&gt;--><!--</plugins>--></build>对于模块间注入对象的,访问不到的启动类添加:启动类代码如下:@SpringBootApplication@ComponentScan(basePackages = {"com.cp.springboot.web","com.cp.springboot.domain.bean"})public class WebApplication {public static void main(String[] args) {SpringApplication.run(WebApplication.class, args);}}设置扫描包ComponentScan
复制代码

1.参考博客

转载于:https://juejin.im/post/5be7fb3651882516f6633fb4

Spring-boot模块化编程相关推荐

  1. Spring Boot 核心编程思想-第二部分-读书笔记

    怕什么真理无穷 进一步有近一步的欢喜 说明 本文是Spring Boot核心编程思想记录的笔记,书籍地址:Spring Boot编程思想(核心篇): 这篇文档会记录这本我的一些读书的思考,内容可能比较 ...

  2. Spring Boot 核心编程思想-第一部分-读书笔记

    怕什么真理无穷 进一步有近一步的欢喜 说明 本文是Spring Boot核心编程思想记录的笔记,书籍地址:Spring Boot编程思想(核心篇): 本书已经简单读过一遍,在第一遍读的时候发现里面有些 ...

  3. Spring Boot常见企业开发场景应用、自动配置原理结构分析

    读者应具备: Spring SpringMVC服务器端开发基础 Maven基础 本篇主要介绍Spring Boot在企业开发中常见场景的使用.以及Spring Boot的基本原理结构. 以下为本篇设计 ...

  4. Spring Boot (一)Spring Boot 概述

    Spring Boot(一) 一 . Spring Boot 是什么? 首先Spring Boot不是一个框架,它是一种用来轻松创建具有最小或零配置的独立应用程序的方式.这是方法用来开发基于Sprin ...

  5. Spring Boot Framework的关键组件和内部构造(自动装配、起步依赖、CLI、Actuator)

    Spring Boot Framework的关键组件和内部组件 在我之前的文章"Spring Boot简介"中,我们讨论了Spring Boot基础知识.现在我们将讨论" ...

  6. Spring Boot教程

    Spring Boot教程 欢迎使用Spring Boot教程.Spring Boot是Pivotal Team(The Spring Team)的一个全新项目.它是在现有Spring Framewo ...

  7. spring boot组件_Spring Boot Framework的关键组件和内部

    spring boot组件 In my previous post "Introduction to Spring Boot", we have discussed about S ...

  8. 基于Spring boot的图书馆图书借阅管理系统的设计与实现

    作者主页:编程千纸鹤 作者简介:Java.前端.Python开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好处 ...

  9. Spring Boot从零入门2_核心模块详述和开发环境搭建

    本文属于原创,转载注明出处,欢迎关注微信小程序小白AI博客 微信公众号小白AI或者网站 https://xiaobaiai.net 文章目录 1 前言 2 名词术语 3 Spring Boot核心模块 ...

  10. java按需读取word文件_干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结...

    我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章<.NET CORE与Spring Boot编写控制台程序应有 ...

最新文章

  1. 在IE中测试调用Web Service
  2. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)...
  3. Java NIO3:缓冲区Buffer
  4. 最强的游戏计算机,这可能是市面上体积最小性能最强的游戏主机了
  5. CodeForces - 1307C Cow and Message(思维)
  6. 案例逐步演示python利用正则表达式提取指定内容并输出到csv
  7. sql的子查询超级慢-子查询酿的祸
  8. 利用redis-sentinel+keepalived实现redis高可用
  9. ubuntu18安装微信
  10. android 生成签名和SHA1签名信息
  11. 关于Sentaurus的日常(三)
  12. python股票查询系统_使用Python查询股票所属行业
  13. 我新鲜出炉的 plist 图集拆图工具!github
  14. springBoot学习笔记(6)——@Valid和@Validated的使用
  15. 蓝牙耳机牌子排行榜2020:性能最强的蓝牙耳机排名前十
  16. SSM+在线纳新系统 毕业设计-附源码241540
  17. Ubuntu 16.04 安装Tensorflow Object Detection API (一)
  18. hex颜色透明度对比表
  19. WWDC————苹果全球开发者大会
  20. 敏捷个人-认识自我,管理自我 v0.8.pdf 下载

热门文章

  1. 解决数据库导入导出的常见问题集解决办法
  2. X5档案-参加业务架构平台研讨会后记
  3. 单调栈与单调队列简单例题
  4. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
  5. 安装cocoaPod 的问题
  6. file 创建 txt文件
  7. Step by Step 使用HTML5开发一个星际大战游戏(1)
  8. PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
  9. 实现国标GB/T2818视频流媒体解决方案EasyGBS国标GB28181-2016版的sip协议tcp沾包流程说明介绍
  10. centos cron 自动执行脚本异常 命令不生效的解决办法