项目-轻客管家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中已经自动帮我们配置好了依赖。

相关推荐
还是奇怪10 分钟前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework25 分钟前
1.ansible安装 2.虚拟机克隆
java
码上解惑34 分钟前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
程序员-珍2 小时前
报错下载android sdk失败
android·java
糖果店的幽灵2 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
吃饱了得干活2 小时前
亿级订单表分库分表设计,从0到1全流程
java·数据库·面试
唐青枫3 小时前
Java Spring Security 实战详解:从登录认证到 JWT 权限控制
java
曹牧3 小时前
文档格式:OFD
java
豆角焖肉3 小时前
Maven进阶与搭建私服
java·maven