现在市面上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>
如有帮到你可以点赞,收藏或鼓励一下(
^_^
),有什么疑问可以评论交流互相学习