前言
当我们的单体工程功能越来越复杂、代码量越来越多时,通过合理地模块拆分,可以提高代码的复用性,使项目的结构更加清晰、明确,方便后期项目的维护和管理。
创建父工程
笔者汪小成并没有选择使用
Spring Initializr
或者IDEA
快速创建项目,而是选择最原始地手动创建项目。因为父工程主要作用是统一管理Maven依赖版本,只需要有一个pom.xml
文件即可。使用Spring Initializr
或者IDEA
创建项目时自动生成的其它文件或文件夹(比如:src
)都还要删除。
1、创建父工程文件夹
$ mkdir spring-boot-demos && cd spring-boot-demos
2、创建pom.xml
文件
$ touch pom.xml
3、编辑pom.xml
文件
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.ddcherry</groupId>
<artifactId>spring-boot-demos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-demos</name>
<!-- 父工程的打包方式必须是pom -->
<packaging>pom</packaging>
<description>spring-boot-demos</description>
<properties>
<java.version>1.8</java.version>
<lombok.version>1.18.24</lombok.version>
<spring-boot.version>2.7.7</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
<!-- 这里统一管理所有子工程的依赖的版本号 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
说明:
- 父工程
pom.xml
文件中<packaging>
节点的值必须为pom
。
从pom.xml
文件中可以看出笔者汪小成选择的JDK版本为1.8
,Spring Boot的版本为2.7.7
。
引入Spring Boot 相关Maven依赖,笔者汪小成并没有选择继承spring-boot-starter-parent
的方式,而是选择了在<dependencyManagement>
节点下引入spring-boot-dependencies
的方式。
使用spring-boot-dependencies
引入Spring Boot 相关Maven依赖,可以解决Maven项目单继承的问题。这样我们就可以在引入Spring Boot 相关Maven依赖的同时继承其他父工程。
4、使用IDEA打开父工程
File
--> Open...
--> 选择父工程文件夹 --> OK
父工程至此也就创建完成啦。
创建子工程
1、在父工程上单击鼠标右键,选择New
--> Module
;
2、在New Module
对话框中,选择Maven
--> 点击Next
按钮;
3、输入子工程的Name
--> 点击Finish
按钮。
说明:笔者汪小成本地环境里已经创建了子工程
01.spring-boot-hello
了,截图中的Name
不能再输入01.spring-boot-hello
了。
子工程创建成功后,父工程的pom.xml
文件的<modules>
节点下会自动增加一个<module>
。
<modules>
<module>01.spring-boot-hello</module>
</modules>
4、编辑子工程pom.xml
文件
子工程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">
<parent>
<artifactId>spring-boot-demos</artifactId>
<groupId>cn.ddcherry</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>01.spring-boot-hello</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
</project>
至此子模块也创建成功了。现在就可以着手在子工程中编码了。