1、项目概述
前端:

后端:

所有的项目代码都放在同一个maven项目中的,包括项目中的 实体类、工具类、以及项目的业务代码。
如果把所有的代码都写在一个项目中,主要两点问题:项目中的通用组件难以复用、不方便项目的维护和管理。
2、模块设计
2.1 分模块设计:
分模块设计就是将项目按照功能/结构拆分成若干个子模块,每一个模块都是独立的。方便项目的管理维护、拓展,也方便模块键的相互调用、资源共享。
-
比如:
-
可以将项目中涉及到的工具类、通用组件,单独抽取到一个maven模块中,就叫
qk-common -
可以将项目中涉及到的实体类,单独抽取到一个maven模块中,就叫
qk-entity -
可以将项目中涉及到的核心业务代码,单独抽取到一个maven模块中,就叫
qk-management
-

然后,在别的项目中,如果需要用到那个模块,我们就只需要在pom.xml中引入对应的依赖坐标就可以了。 比如,在 qk-management 模块中需要用到工具类、实体类,而工具类存放在 qk-common 模块中,实体类存放在 qk-entity 模块中,所以此时只需要在 qk-management 模块的pom.xml 中引入 qk-common、qk-entity 的依赖坐标即可。

**注意:**在maven中项目与项目之间,也可以继承,而与java类似,maven项目之间也是单继承,不支持多继承。
2.2 模块创建
具体操作步骤如下:
-
创建项目父工程
qk-parent,打包方式为pom,设置父工程为spring-boot-starter-parent -
创建子工程
qk-common,设置父工程为qk-parent -
创建子工程
qk-entity,设置父工程为qk-parent -
创建子工程
qk-management,设置父工程为qk-parent

1). 创建项目父工程 qk-parent ,打包方式为 pom ,设置父工程为 spring-boot-starter-parent
打开idea,创建一个新的project,名字为 qk-parent。

项目创建完毕后,基础的结构如下:

接下来,我们需要做如下调整:
-
删除掉 src 目录,因为
qk-parent是父工程,里面不需要写任何代码,只是管理其他的子模块。 -
设置打包方式为
pom,标识这个项目是用来管理其他项目的,不写任何代码。 -
指定继承关系,让
qk-parent继承springboot项目统一的父工程spring-boot-starter-parent。

pom.xml的代码如下:
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.qk</groupId>
<artifactId>qk-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.0</version>
<relativePath/>
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
2). 创建子工程 qk-common ,设置父工程为 qk-parent
由于该模块,仅仅用来管理一些通用组件、工具类,并不需要单独启动运行,所以创建一个普通的maven项目即可,不需要创建springboot项目。
由于 qk-common 是 qk-parent 的子模块,所以将其放在 qk-parent 下面就可以了。 选中 qk-parent 项目,右键选择new module。

创建完毕后,我们可以看到qk-common已经继承了qk-parent这个父工程了。

如果在maven项目中指定了继承关系,设置了父工程,如果父工程与子工程的组织名、版本一致,子工程坐标中的<groupId><version> 是可以省略的,默认与父工程一致。
3). 创建子工程 qk-entity ,设置父工程为 qk-parent
由于该模块,仅仅用来管理一些实体类,也不需要单独启动运行,所以创建一个普通的maven项目即可,不需要创建springboot项目。
由于 qk-entity 是 qk-parent 的子模块,所以将其放在 qk-parent 下面就可以了。 选中 qk-parent 项目,右键选择new module。

创建完毕后,我们可以看到qk-entiy已经继承了qk-parent这个父工程了。

4). 创建子工程 qk-management ,设置父工程为 qk-parent
由于 qk-management 里面存储的是轻客管家这个项目的核心代码,最终是要独立运行的。所以这里我们要创建一个SpringBoot项目。

在创建springboot项目时,勾选 web开发的起步依赖,mybatis的依赖,mysql驱动的依赖。

项目创建好了之后,我们可以看到这个项目默认继承了springboot的父工程spring-boot-starter-parent。

而按照我们前面的设计,qk-management是不是需要继承我们自己创建的qk-parent这个父工程啊,所以需要对pom.xml中的配置做如下调整,调整后的pom.xml配置如下:
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>
<parent>
<groupId>com.qk</groupId>
<artifactId>qk-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>qk-management</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>qk-management</name>
<description>qk-management</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.qk</groupId>
<artifactId>qk-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.qk</groupId>
<artifactId>qk-entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.3 依赖配置
2.3.1 公共依赖抽取
进行了分模块设计与开发之后,在进行依赖配置的时候,如果各个子工程中都需要引入某一项依赖,比如lombok,如果在各个子工程中分别引入,会比较麻烦,并且也不便于维护和管理。
所以,如果是各个子工程中公共的这部分依赖,我们是可以直接统一抽取到父工程,在父工程中统一进行配置的,父工程一旦引入了这部分公共的依赖之后,各个子工程都会继承下来。
2.3.2 版本锁定
我们所创建SpringBoot工程中,项目创建完毕后,在pom.xml中已经自动帮我们配置好了依赖。