文章目录
前言
不太会使用 IDEA 创建 Maven 的多模块项目,而在实际的项目开发中又经常遇到,并且自己平时写得一些小模块可以放在一个父项目中。所以,这一简要地记录一下。提示:以下是本篇文章正文内容,下面案例可供参考
1. 多模块项目介绍
Maven 多模块项目通常由一个父模块和若干个子模块构成,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块)相互关联。多模块适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。如下图:
其中,sb 是父模块,sb_vue 是子模块。
2. 多模块项目创建
这里每个模块都是 SpringBoot 项目,不过是由 Maven 项目改造的,下面简要介绍下创建过程。
2.1 父模块创建
- New 一个 Maven 项目:File —New—Project,填写一个 Project Name,如:sb
- 填写 groupId、artifactId、package。这里就随便写咯
- groupId是项目组织唯一的标识符,实际对应JAVA的包的结构
- artifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称
- package最好是以groupId.artifactId打头的
- 一些其他操作
2.2 子模块创建
在上面创建好的 sb 工程名上,点击右键,选择New–>Module,进入New Module页面。后面其他的参数都可参照父模块的参数设置。
到这里,一个父模块和子模块的创建就完成了。如下图:
删除父模块的src目录,因为此处的父模块只做依赖管理,不需要编写代码
3. 多模块项目配置
首先将 Maven 项目配置成 SpringBoot 项目。
导入 parent 标签
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
导入 SpringBoot 依赖
这里父模块就不引入,子模块会引入 web 依赖的
添加 主类
SpringBoot 项目的主方法的类
3.1 父模块POM文件配置
父pom 是为了抽取统一的配置信息和依赖版本控制,方便子pom直接引用,简化子pom的配置。
3.1.1 父模块的打包类型
多模块项目中,父模块打包类型必须是pom,同时以给出所有的子模块,其中每个module,都是另外一个maven项目。
给父模块添加子模块时,IDEA 会在 modules 标签中自动添加的
3.1.2 继承设置
继承是maven中很强大的一种功能,继承可以使子pom获得parent中的各项配置,对子pom进行统一的配置和依赖管理。父pom中的大多数元素都能被子pom继承.
3.1.3 使用dependencyManagement管理依赖版本号
一般在项目最顶层的父pom中使用该元素,让所有子模块引用一个依赖而不用显式的列出版本号。maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
3.1.4 使用properties控制依赖包的版本号,便于版本维护
在properties标签中,添加各依赖包的版本号,然后在dependency中直接引用该依赖版本号的值即可。
父模块 POM 文件
<?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