项目-轻客管家1-环境准备

1、项目概述

前端:

后端:

所有的项目代码都放在同一个maven项目中的,包括项目中的 实体类、工具类、以及项目的业务代码。

如果把所有的代码都写在一个项目中,主要两点问题:项目中的通用组件难以复用、不方便项目的维护和管理。

2、模块设计

2.1 分模块设计:

分模块设计就是将项目按照功能/结构拆分成若干个子模块,每一个模块都是独立的。方便项目的管理维护、拓展,也方便模块键的相互调用、资源共享。

  • 比如:

    • 可以将项目中涉及到的工具类、通用组件,单独抽取到一个maven模块中,就叫 qk-common

    • 可以将项目中涉及到的实体类,单独抽取到一个maven模块中,就叫 qk-entity

    • 可以将项目中涉及到的核心业务代码,单独抽取到一个maven模块中,就叫 qk-management

然后,在别的项目中,如果需要用到那个模块,我们就只需要在pom.xml中引入对应的依赖坐标就可以了。 比如,在 qk-management 模块中需要用到工具类、实体类,而工具类存放在 qk-common 模块中,实体类存放在 qk-entity 模块中,所以此时只需要在 qk-management 模块的pom.xml 中引入 qk-commonqk-entity 的依赖坐标即可。

**注意:**在maven中项目与项目之间,也可以继承,而与java类似,maven项目之间也是单继承,不支持多继承。

2.2 模块创建

具体操作步骤如下:

  1. 创建项目父工程qk-parent,打包方式为pom,设置父工程为spring-boot-starter-parent

  2. 创建子工程qk-common,设置父工程为qk-parent

  3. 创建子工程qk-entity,设置父工程为qk-parent

  4. 创建子工程qk-management,设置父工程为qk-parent

1). 创建项目父工程 qk-parent ,打包方式为 pom ,设置父工程为 spring-boot-starter-parent

打开idea,创建一个新的project,名字为 qk-parent

项目创建完毕后,基础的结构如下:

接下来,我们需要做如下调整:

  • 删除掉 src 目录,因为qk-parent 是父工程,里面不需要写任何代码,只是管理其他的子模块。

  • 设置打包方式为pom,标识这个项目是用来管理其他项目的,不写任何代码。

  • 指定继承关系,让qk-parent继承springboot项目统一的父工程spring-boot-starter-parent

pom.xml的代码如下:

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>

    <groupId>com.qk</groupId>
    <artifactId>qk-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.0</version>
        <relativePath/>
    </parent>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

2). 创建子工程 qk-common ,设置父工程为 qk-parent

由于该模块,仅仅用来管理一些通用组件、工具类,并不需要单独启动运行,所以创建一个普通的maven项目即可,不需要创建springboot项目。

由于 qk-commonqk-parent 的子模块,所以将其放在 qk-parent 下面就可以了。 选中 qk-parent 项目,右键选择new module

创建完毕后,我们可以看到qk-common已经继承了qk-parent这个父工程了。

如果在maven项目中指定了继承关系,设置了父工程,如果父工程与子工程的组织名、版本一致,子工程坐标中的<groupId><version> 是可以省略的,默认与父工程一致。

3). 创建子工程 qk-entity ,设置父工程为 qk-parent

由于该模块,仅仅用来管理一些实体类,也不需要单独启动运行,所以创建一个普通的maven项目即可,不需要创建springboot项目。

由于 qk-entityqk-parent 的子模块,所以将其放在 qk-parent 下面就可以了。 选中 qk-parent 项目,右键选择new module

创建完毕后,我们可以看到qk-entiy已经继承了qk-parent这个父工程了。

4). 创建子工程 qk-management ,设置父工程为 qk-parent

由于 qk-management 里面存储的是轻客管家这个项目的核心代码,最终是要独立运行的。所以这里我们要创建一个SpringBoot项目。

在创建springboot项目时,勾选 web开发的起步依赖,mybatis的依赖,mysql驱动的依赖。

项目创建好了之后,我们可以看到这个项目默认继承了springboot的父工程spring-boot-starter-parent。

而按照我们前面的设计,qk-management是不是需要继承我们自己创建的qk-parent这个父工程啊,所以需要对pom.xml中的配置做如下调整,调整后的pom.xml配置如下:

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.qk</groupId>
        <artifactId>qk-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    
    <artifactId>qk-management</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qk-management</name>
    <description>qk-management</description>

    <properties>
        <java.version>17</java.version>
    </properties>

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

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

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

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

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>3.0.4</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>com.qk</groupId>
            <artifactId>qk-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.qk</groupId>
            <artifactId>qk-entity</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.3 依赖配置

2.3.1 公共依赖抽取

进行了分模块设计与开发之后,在进行依赖配置的时候,如果各个子工程中都需要引入某一项依赖,比如lombok,如果在各个子工程中分别引入,会比较麻烦,并且也不便于维护和管理。

所以,如果是各个子工程中公共的这部分依赖,我们是可以直接统一抽取到父工程,在父工程中统一进行配置的,父工程一旦引入了这部分公共的依赖之后,各个子工程都会继承下来。

2.3.2 版本锁定

我们所创建SpringBoot工程中,项目创建完毕后,在pom.xml中已经自动帮我们配置好了依赖。

相关推荐
xqqxqxxq8 小时前
Java AI智能P图工具技术笔记
java·人工智能·笔记
谷雨不太卷8 小时前
进程的状态码
java·前端·算法
顾温9 小时前
default——C#/C++
java·c++·c#
空中海9 小时前
02 ArkTS 语言与工程规范
java·前端·spring
楚国的小隐士9 小时前
在AI时代,如何从0接手一个项目?
java·ai·大模型·编程·ai编程·自闭症·自闭症谱系障碍·神经多样性
yaki_ya9 小时前
yaki-C语言:从概念基础到内存解析---数组(array)完全指南
java·c语言·算法
刃神太酷啦9 小时前
扒透 STL 底层!map/set 如何封装红黑树?迭代器逻辑 + 键值限制全手撕----《Hello C++ Wrold!》(23)--(C/C++)
java·c语言·javascript·数据结构·c++·算法·leetcode
亚历克斯神9 小时前
Java 25 模式匹配增强:让代码更简洁优雅
java·spring·微服务
星辰徐哥9 小时前
Rust异步测试与调试的实践指南
android·java·rust