easylive仿B站项目 后端 单体版 项目构建

搭建环境

JDK版本

项目使用的是jdk1.8版本,我电脑上原本有的是jdk21版本

我先管理一下JDK版本

手动管理一下版本

下载新的jdk1.8

jdk1.8虽然老,但是大多企业仍然在用,有很好的稳定性,虽然缺少了部分新的语法。

手动添加一下

java命令试一下是否配置成功

Mysql数据库

使用5.7版本的

Redis

ffmpeg

配置环境变量

Maven

配置阿里云镜像

配置环境变量

IDEA

idea使用破解学习版

打开IDEA设置

搜索栏搜索Maven

选择和配置Maven的路径和仓库路径

搜索编码或者file encode

使用utf-8编码

项目创建

在工作目录下手动创建以下文件夹结构

看教程视频看到这里发现要写pom.xml文件,这个是肯定要拿到资料才能做的,于是我翻阅视频评论区才发现作者是有提供项目资料在线文档的,我现在才发现。项目构建 - 飞书云文档

根pom.xml

html 复制代码
<?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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.18</version>
        <relativePath/>
    </parent>
    <groupId>com.easylive</groupId>
    <artifactId>easylive</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>easylive-common</module>
        <module>easylive-admin</module>
        <module>easylive-web</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <skipTests>true</skipTests>

        <springboot.version>2.7.18</springboot.version>
        <mybatis.version>1.3.2</mybatis.version>
        <logback.version>1.2.10</logback.version>
        <mysql.version>8.0.23</mysql.version>
        <aspectjweaver.version>1.9.3</aspectjweaver.version>
        <fastjson.version>1.2.83</fastjson.version>
        <commons.lang3.version>3.4</commons.lang3.version>
        <commons.csv.version>1.2</commons.csv.version>
        <commons.codec.version>1.9</commons.codec.version>
        <commons.io.version>2.5</commons.io.version>
        <lombok.version>1.18.22</lombok.version>
        <captcha.verion>1.6.2</captcha.verion>
        <es.version>3.3.2</es.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${springboot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>

            <!-- 数据库-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>

            <!-- 日志版本 -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.version}</version>
            </dependency>

            <!--切面-->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectjweaver.version}</version>
            </dependency>

            <!--fastjson-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons.lang3.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons.codec.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons.io.version}</version>
            </dependency>

            <!---es search-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
                <version>${es.version}</version>
            </dependency>

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.whvcse</groupId>
                <artifactId>easy-captcha</artifactId>
                <version>${captcha.verion}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
</project>

common模块pom.xml

html 复制代码
<?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.easylive</groupId>
        <artifactId>easylive</artifactId>
        <version>1.0</version>
    </parent>
    <groupId>com.easylive</groupId>
    <artifactId>easylive-common</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <skipTests>true</skipTests>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!-- 数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- 日志版本 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

        <!--切面-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>

        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>

        <!--apache common-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.whvcse</groupId>
            <artifactId>easy-captcha</artifactId>
        </dependency>

    </dependencies>
</project>

admin模块pom.xml

html 复制代码
<?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.easylive</groupId>
        <artifactId>easylive</artifactId>
        <version>1.0</version>
    </parent>
    <groupId>com.easylive</groupId>
    <artifactId>easylive-admin</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <skipTests>true</skipTests>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.easylive</groupId>
            <artifactId>easylive-common</artifactId>
            <version>1.0</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.6.RELEASE</version>
                <configuration>
                    <mainClass>com.easylive.admin.EasyliveAdminRunApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

web模块pom.xml

html 复制代码
<?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.easylive</groupId>
        <artifactId>easylive</artifactId>
        <version>1.0</version>
    </parent>
    <groupId>com.easylive</groupId>
    <artifactId>easylive-web</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <skipTests>true</skipTests>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.easylive</groupId>
            <artifactId>easylive-common</artifactId>
            <version>1.0</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.6.RELEASE</version>
                <configuration>
                    <mainClass>com.easylive.web.EasyliveWebRunApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

导入logback配置文件

复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 minutes">
    <appender name="stdot" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss,GMT+8} [%p][%c][%M][%L]-> %m%n</pattern>
        </layout>
    </appender>

    <springProperty scope="context" name="log.path" source="project.folder"/>
    <springProperty scope="context" name="log.root.level" source="log.root.level"/>
    <springProperty scope="context" name="appname" source="spring.application.name"/>

    <property name="LOG_FOLDER" value="logs"/>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/${LOG_FOLDER}/${appname}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${log.path}/${LOG_FOLDER}/${appname}.%d{yyyyMMdd}.%i</FileNamePattern>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>20MB</MaxFileSize>
            </TimeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss,GMT+8} [%p][%c][%M][%L]-> %m%n</pattern>
        </encoder>
        <append>false</append>
        <prudent>false</prudent>
    </appender>

    <logger name="org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener"
            level="error"></logger>
    <logger name="org.redisson.connection.DNSMonitor" level="error"></logger>
    <logger name="com.zaxxer.hikari" level="info"></logger>
    <logger name="io.lettuce.core" level="info"></logger>
    <logger name="org.springframework.data.redis" level="info"></logger>
    <root level="${log.root.level}">
        <appender-ref ref="stdot"/>
        <appender-ref ref="file"/>
    </root>

</configuration>

导入application.yml配置文件

复制代码
server:
  port: 7070
  servlet:
    context-path: /admin
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 15MB
  application:
    name: easylive-admin
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/easylive?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      pool-name: HikariCPDatasource
      minimum-idle: 5
      idle-timeout: 180000
      maximum-pool-size: 10
      auto-commit: true
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    jedis:
      pool:
        max-active: 20
        max-wait: -1
        max-idle: 10
        min-idle: 0
    timeout: 2000
#mybatis 大小写转驼峰
mybatis:
  configuration:
    map-underscore-to-camel-case: true

project:
  folder: c:/webser/easylive/
log:
  root:
    level: debug

项目结构

(注意我事后发现,admin的 yml文件放错位置了,yml应该放在resources包里面,这个问题导致了我后面tomcat服务器没有从yml文件上面指定的7070端口启动,而变成了默认的8080端口启动)

Maven依赖管理导入pom文件

开始编译

如果mvn命令提示无法识别的话,就要去添加环境变量

复制代码
PS D:\files\Code\mybilibili-java> mvn clean install -U


[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] expected START_TAG or END_TAG not TEXT (position: TEXT seen ...</mirror>\n    <mirror> \ua0 \ua0 \ua0 \ua0\n        <i... @168:11)  @ D:\apache-maven-3.9.5\conf\settings.xml, line 168, column 11
[WARNING] 
[INFO] Scanning for projects...
Downloading from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/org/springframework/boot/spring-boot-starter-parent/2.7.18/spring-boot-starter-parent-2.7.18.pom
Downloaded from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/org/springframework/boot/spring-boot-starter-parent/2.7.18/spring-boot-starter-parent-2.7.18.pom (9.2 kB at 14 kB/s)
Downloading from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/org/springframework/boot/spring-boot-dependencies/2.7.18/spring-boot-dependencies-2.7.18.pom
Downloaded from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/org/springframework/boot/spring-boot-dependencies/2.7.18/spring-boot-dependencies-2.7.18.pom (110 kB at 1.8 MB/s)
Downloading from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/com/datastax/oss/java-driver-bom/4.14.1/java-driver-bom-4.14.1.pom
Downloaded from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/com/datastax/oss/java-driver-bom/4.14.1/java-driver-bom-4.14.1.pom (4.1 kB at 101 kB/s)
Downloading from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/io/dropwizard/metrics/metrics-bom/4.2.22/metrics-bom-4.2.22.pom
Downloaded from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/io/dropwizard/metrics/metrics-bom/4.2.22/metrics-bom-4.2.22.pom (8.2 kB at 200 kB/s)
Downloading from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/io/dropwizard/metrics/metrics-parent/4.2.22/metrics-parent-4.2.22.pom
Downloaded from nexus-alimaven: https://maven.aliyun.com/nexus/content/groups/public/io/dropwizard/metrics/metrics-parent/4.2.22/metrics-parent-4.

pom文件都没有问题的情况下就可以编译正常了

复制代码
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for mybilibili 1.0:
[INFO]
[INFO] mybilibili ......................................... SUCCESS [  0.419 s]
[INFO] mybilibili-common .................................. SUCCESS [  2.173 s]
[INFO] mybilibili-admin ................................... SUCCESS [  8.419 s]
[INFO] mybilibili-web ..................................... SUCCESS [  0.670 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  12.071 s
[INFO] Finished at: 2026-01-16T21:17:02+08:00
[INFO] ------------------------------------------------------------------------

调整admin和web端的yml 文件的某些不同的参数

两个服务器要使用不同的端口号、不同的名称

创建软件包、启动类

(注意我事后发现,admin的 yml文件放错位置了,yml应该放在resources包里面,这个问题导致了我后面tomcat服务器没有从yml文件上面指定的7070端口启动,而变成了默认的8080端口启动)

启动类的代码

java 复制代码
package com.mybilibili.admin;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(scanBasePackages = {"com.mybilibili"} ,exclude={DataSourceAutoConfiguration.class})
public class MybilibiliAdminRunApplication {
    public static void main(String[] args) {
        org.springframework.boot.SpringApplication.run(MybilibiliAdminRunApplication.class, args);
    }
}

启动项目

项目启动成功

相关推荐
阿杰 AJie2 小时前
Java Stream API详细用法
java·windows·python
蒜香拿铁2 小时前
【第五章】python判断语句if
java·服务器·python
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 公寓楼设备报修管理系统为例,包含答辩的问题和答案
java·eclipse
qq_12498707532 小时前
基于微信小程序的宠物寄领养系统(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·宠物·计算机毕业设计
项目題供诗2 小时前
C语言基础(六)
c语言·开发语言
Coding茶水间2 小时前
基于深度学习的吸烟检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
盛者无名2 小时前
Rust的所有权(Owenership)
开发语言·rust
独自破碎E2 小时前
说说Java中的JIT
java·开发语言