一、前言
1. 项目简介
本项目是前后端分离项目,而我们所做的只有完整的后端开发工作,前端已经写好,故不做任何开发,仅开发后端。项目包含完整的后端中前台和后台的代码编写
前端项目下载链接:
https://pan.baidu.com/s/1TdFs4TqxlHh4DXyLwYuejQ
提取码:mfkw
2. 技术栈
前端:Vue + ElementUI
后端:SpringBoot + SpringSecurity + Maven + MybatisPlus + Mysql + Redis + EasyExcel + Swagger2 + Echarts
3. 运行环境
Intellj IDEA 2022.1.4
jdk 1.8.0_381
Apache Maven 3.8.6
mysql 8.0.29
二、项目搭建
1. 思考
由于项目后端分为前台和后台两个部分,且都有用到相同的实体等等,所以考虑到代码的复用性,我们把后端的前台和后台管理的两个模块的相同代码抽取出来放在一个公共模块里。即两个子模块,一个父模块的多模块项目
两个子模块分别是:博客前台模块keke-blog,博客后台模块keke-admin
公共模块:keke-framework
2. 工程创建
在F盘中创建一个目录BlogProject然后在该目录下创建模块
2.1 创建父模块(父)
将默认的项目结构修改如下
我们把这个工程,作为我们的父级工程,所以src目录就不再需要了,仅需要pom.xml配置文件即可。故把src目录删除,在pom.xml中添加至以下内容(注意要删除上面的properties标签)
<?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.keke</groupId>
<artifactId>KekeBlog</artifactId>
<version>1.0-SNAPSHOT</version>
<!--编码方式、jdk版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<!--依赖的版本控制,不是真正的依赖,是对依赖版本的锁定-->
<dependencyManagement>
<dependencies>
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--fastjson依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
<!--jwt依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<!--mybatisPlus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!--阿里云OSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<!-- excel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
<!-- swaggerUI-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<!--配置maven版本-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<!--配置jdk版本-->
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.2 创建公共模块(子)
创建公共模块keke-framework,该模块实现依赖统一添加
公共模块的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>KekeBlog</artifactId>
<groupId>com.keke</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keke-framework</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--junit-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--SpringSecurity启动器-->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>-->
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--fastjson依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!--jwt依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!--mybatisPlus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--阿里云OSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<!--AOP-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- excel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!-- swaggerUI-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
</dependencies>
</project>
2.3 创建博客后台模块(子)
后台模块依赖于公共模块,所以我们修改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>KekeBlog</artifactId>
<groupId>com.keke</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keke-admin</artifactId>
<!--用keke-framework模块里面的依赖-->
<dependencies>
<dependency>
<groupId>com.keke</groupId>
<artifactId>keke-framework</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
可以看到,依赖都加载进入该子模块
2.4 创建博客前台模块(子)
操作同博客后台模块一样,在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>KekeBlog</artifactId>
<groupId>com.keke</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keke-blog</artifactId>
<dependencies>
<dependency>
<groupId>com.keke</groupId>
<artifactId>keke-framework</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
2.5 Maven聚合工程总结
以上操作概括为一个项目为父模块,在父模块中锁定依赖的版本。父模块又有三个子模块,分别为公共模块,博客后台模块和博客前台模块。公共模块中添加项目所需要的模块,博客后台模块和博客前台模块去依赖公共模块,从而达到依赖的继承
可以看到,父模块中多了三个子module,并且KekeBlog为root(根),这样的Maven聚合工程,使得在Maven生命周期中,只需要操作父模块,其余所有模块就都会一起进行操作,省去了逐个模块操作的复杂工作
三、准备工作
3.1 SQL导入
数据库sql文件不需要自己去写,解压sql.zip文件后有11个sql脚本,全部导入数据库即可
链接:https://pan.baidu.com/s/1DQCGN4wISSDlOkqnVWYwxA
提取码:mfkw