SpringBoot-规划多模块目录结构
现在市面上SpringBoot项目一般分两种目录结构
- 一个模块,每类功能分布在各个包下(结构简单,使用方便,分包明确)
- 多模块划分,分父模块和子模块,有的子模块下再分子模块,一个子模块就是一种功能,此功能我称之为业务实现,或插件配置(结构相对复杂,前期搭建略显示繁琐,分类清晰细致,更符合多模块目录结构)
使用哪种看个人喜好和考量,下面简单介绍下多模块目录结构:
父模块:zibocoder-parent,项目根目录,其 pom.xml
文件记录各子模块、依赖版本号管理、Maven
编译打包插件等
子模块:
-
zibocoder-auth(认证授权模块):包括用户登录、登出、获取用户信息及权限
-
zibocoder-modules(业务模块):如系统模块、博客模块业务实现等
-
zibocoder-plugins(插件模块):有的习惯用
xxx-common
(公共模块)- 集成各类插件功能,如json插件,mybatisplus插件,redis插件,satoken插件,web插件等第三方插件以及自定义公共插件的集成
- 使用了
bom
模式进行依赖管理,只是对版本进行管理,不会实际引入jar
zibocoder-plugins/pom.xml
...<modules><module>zibocoder-plugins-bom</module><module>zibocoder-plugins-satoken</module><module>zibocoder-plugins-web</module><module>zibocoder-plugins-mybatisplus</module><module>zibocoder-plugins-redis</module><module>zibocoder-plugins-common</module><module>zibocoder-plugins-json</module></modules> </project>
zibocoder-plugins-bom/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><!-- bom --><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-bom</artifactId><version>1.0.0</version><packaging>pom</packaging><description>使用 BOM (Bill of Materials) 模式进行依赖管理管理多个插件的依赖版本</description><properties><zibocoder.version>1.0.0</zibocoder.version></properties><!-- 只是对版本进行管理,不会实际引入jar --><dependencyManagement><dependencies><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-satoken</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-web</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-mybatisplus</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-redis</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-common</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-json</artifactId><version>${zibocoder.version}</version></dependency></dependencies></dependencyManagement> </project>
根
pom.xml
... <dependencyManagement><dependencies><!-- plugins 的依赖配置 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-bom</artifactId><version>${zibocoder.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>... </dependencyManagement>
如在
zibocoder-auth
模块中使用zibocoder-plugins-satoken
插件,则在zibocoder-auth/pom.xml
引入依赖如下:... <dependencies><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-satoken</artifactId></dependency>... </dependencies>
-
zibocoder-starter(启动模块):项目启动,主程序入口
zibocoder-starter/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><parent><groupId>com.zibocoder</groupId><artifactId>zibocoder-parent</artifactId><version>1.0.0</version></parent><artifactId>zibocoder-starter</artifactId><description>启动服务模块,主程序入口</description><dependencies><!-- mysql驱动依赖 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!-- p6spy日志依赖 --><dependency><groupId>com.github.gavlyukovskiy</groupId><artifactId>p6spy-spring-boot-starter</artifactId></dependency><!-- Logback依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><!-- 系统模块依赖 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-system</artifactId></dependency><!-- 认证模块依赖 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-auth</artifactId></dependency><!-- 自定义json插件依赖,主要加载自定义json格式化配置 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-json</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName> <!-- 生成jar的文件名,不指定名字默认以artifactId-version形式命名 --><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>
如有帮到你可以点赞,收藏或鼓励一下(
^_^
),有什么疑问可以评论交流互相学习