河南循中网络科技有限公司 - 精心创作,详细分解,按照步骤,均可成功!
文章目录
为什么要做多模块?
单模块开发的缺点
- 代码耦合度高,出现问题时,不利于定位问题,即便找到问题,也可能会牵一发而动全身,出现其他问题。
- 多方面的代码集中在一个结构中,对于新人的阅读性差,上手介入成本高,需要有熟悉整体项目的开发者协助才能上手,若项目较大,开发周期较长的项目中,这种协助几乎成了奢望。
- 代码边界很模糊,在复杂的项目中很容易遇到,他人改了自己的代码,自己改了他人的代码,并且各自不自知,只有出现了问题才会发觉,此时便为时已晚。
多模块开发的优点
- 降低代码耦合度,出现问题时,容易定位并迅速解决。
- 每个模块都可以自行解释编译,则可以启动相应的模块服务。
- 多人协作边界定义清晰,可每人负责其中一个模块。
- 重点模块可以抽象出来作为公共类使用(由专人负责)。
注意
每个模块都可以单独解释编译,每个模块都可以创建相同的resources配置文件,会根据运行项目优先级进行取配置文件。
SpringBoot项目创建
-
新建一个spring lnitializr的项目。
-
写入“分组名”、“项目名”、“描述”、“包名”,选择“jdk版本”,点击下一步。
-
选择引入的jar包,无需要,则可不选。
-
确认创建的路径,选择创建。
-
配置maven,具体可查看此文章SpringBoot系列 - 集成配置Maven。
-
刷新maven,SpringBoot项目创建完成。
SpringBoot多模块配置
-
删除src文件。
-
点击项目new一个新的Module模块。
-
选择spring lnitializr,点击下一步。
-
写入“分组名”、“模块名”、”描述“、“包名”,选择“jdk版本”,点击下一步。
-
选择引入的jar包,无需要,则可不选。
-
确认创建。
-
配置父pom文件,声明:打包类型、子模块。
<!-- 父模块打包类型必须为pom -->
<packaging>pom</packaging>
<!--模块声明:这里有很多子模块-->
<modules>
<!-- 通用工具 -->
<module>common</module>
</modules>
8. 配置子pom文件,声明:打包类型。
<!-- 子模块打包类型必须为jar -->
<packaging>jar</packaging>
SpringBoot多模块打包启动
刷新、编译打包
common模块下的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xz</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>common</name>
<description>河南循中网络科技有限公司 - 通用工具</description>
<!-- 子模块打包类型必须为jar -->
<packaging>jar</packaging>
<!-- parent指明继承关系,给出被继承的父项目的具体信息 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 版本控制 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 引入的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
项目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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xz</groupId>
<artifactId>xunzhongkeji</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>xunzhongkeji</name>
<description>河南循中网络科技有限公司</description>
<!-- 父模块打包类型必须为pom -->
<packaging>pom</packaging>
<!--模块声明:这里有很多子模块-->
<modules>
<!-- 通用工具 -->
<module>common</module>
</modules>
<!-- parent指明继承关系,给出被继承的父项目的具体信息 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 版本控制 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 引入的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
SpringBoot多模块,子模块引用子模块
- 按相同步骤创建一个子模块。
- 配置父pom文件,声明第二个子模块。
<!--模块声明:这里有很多子模块-->
<modules>
<!-- 通用工具 -->
<module>common</module>
<!-- 程序 -->
<module>system</module>
</modules>
4. 配置子pom文件,声明:打包类型、父级关系、引用分模块。
<!-- 设置打包类型 -->
<packaging>jar</packaging>
<!-- 引用分模块 -->
<dependencies>
<dependency>
<groupId>com.xz</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
system模块下的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xz</groupId>
<artifactId>system</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>system</name>
<description>河南循中网络科技有限公司 - 程序</description>
<!-- 子模块打包类型必须为jar -->
<packaging>jar</packaging>
<!-- parent指明继承关系,给出被继承的父项目的具体信息 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 版本控制 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 引入的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引用分模块 -->
<dependency>
<groupId>com.xz</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
项目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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xz</groupId>
<artifactId>xunzhongkeji</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>xunzhongkeji</name>
<description>河南循中网络科技有限公司</description>
<!-- 父模块打包类型必须为pom -->
<packaging>pom</packaging>
<!--模块声明:这里有很多子模块-->
<modules>
<!-- 通用工具 -->
<module>common</module>
<!-- 程序 -->
<module>system</module>
</modules>
<!-- parent指明继承关系,给出被继承的父项目的具体信息 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 版本控制 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 引入的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
SpringBoot多模块,子模块引用子模块,打包启动