IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【springboot进阶】项目构建(一)父级项目 -> 正文阅读

[Java知识库]【springboot进阶】项目构建(一)父级项目

目录

一、构建自己的父级项目

1、创建父级项目

2、构建自己的项目依赖

二、构建?Spring Cloud 的父级项目

1、创建父级项目

2、构建项目依赖

三、父级项目打包


当代码年龄在2-3年,那么这时候就应该开始审视自己的代码,特别是那些重复性的代码,考虑是否可以重新构建或者抽象出一个或者若干个模块。

这篇我们学习一下父级项目的构建,为以后创建的 Spring Boot 项目构建出所需的项目依赖包。

一、构建自己的父级项目

如果你使用过Spring Boot,那么你肯定知道项目需要引入一个spring-boot-starter-parent,这是 Spring Boot 的父级依赖,它用来提供相关的 Maven 默认依赖。

那么我们也可以类似的,构建属于自己的父级依赖,其他的项目引入后就可以继承父级相关依赖。

1、创建父级项目

我们创建一个父级项目,以 Spring Initializr 的方式创建,项目命名为 backend-parent 。

Spring Boot 使用目前最新的 2.7.4 版本,下面的依赖不需要勾选,直接点击 "Create" 创建项目。

项目创建好后,我们删掉不需要的代码包,只需要留一个pom.xml文件即可。?

2、构建自己的项目依赖

贴上 pom 文件引入的 Maven 依赖包,这里可以根据自己的实际项目情况,引入所需的依赖包。

<?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>
    <packaging>pom</packaging>

    <modules>
        <module>backend-cloud-parent</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>org.liurb</groupId>
    <artifactId>backend-parent</artifactId>
    <version>0.0.1</version>
    <name>backend-parent</name>

    <description>backend-parent</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>

        <fastjson.version>2.0.14</fastjson.version>
        <hutool.version>5.8.8</hutool.version>
        <commons-pool2.version>2.11.1</commons-pool2.version>
        <mybatis-plus-boot-starter.version>3.5.1</mybatis-plus-boot-starter.version>
        <mybatis-plus-generator.version>3.5.1</mybatis-plus-generator.version>
        <javax.mail.version>1.4.7</javax.mail.version>
        <bcprov-jdk15on.version>1.70</bcprov-jdk15on.version>
        <java-jwt.version>4.0.0</java-jwt.version>
        <mysql-connector-java.version>8.0.30</mysql-connector-java.version>
        <commons-lang3.version>3.12.0</commons-lang3.version>

        <junit.version>4.11</junit.version>
    </properties>

    <dependencyManagement>

        <dependencies>

            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>

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

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

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

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus-boot-starter.version}</version>
            </dependency>

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>${mybatis-plus-generator.version}</version>
            </dependency>

            <dependency>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
                <version>${javax.mail.version}</version>
            </dependency>

            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcprov-jdk15on</artifactId>
                <version>${bcprov-jdk15on.version}</version>
            </dependency>

            <dependency>
                <groupId>com.auth0</groupId>
                <artifactId>java-jwt</artifactId>
                <version>${java-jwt.version}</version>
            </dependency>

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector-java.version}</version>
            </dependency>

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

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>

        </dependencies>

    </dependencyManagement>

</project>

父级项目通过?dependencyManagement 标签可以先声明一些公共的依赖包,子项目如果需要用到哪个依赖包,就只需要在该项目的 pom 文件声明即可,不需要填版本号,这样就可以继承父级项目的版本号,以后就可以通过父级项目统一管理依赖的版本号。

Maven 可以通过?dependencyManagement 元素对依赖进行管理,它具有以下 2 大特性:

  • 在该元素下声明的依赖不会实际引入到模块中,只有在 dependencies 元素下同样声明了该依赖,才会引入到模块中。
  • 该元素能够约束?dependencies 下依赖的使用,即 dependencies 声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则将覆盖 dependencyManagement 中的版本。

二、构建?Spring Cloud 的父级项目

因为一般 Spring Cloud 项目都是一个 Spring Boot 项目,所以我们只需要继承上面创建的父级项目,来构建 Spring Cloud 父级项目即可。

1、创建父级项目

这里我们以模块的方式创建,命令为 backend-cloud-parent 。

同样的,项目创建好后,我们删掉不需要的代码包,只需要留一个pom.xml文件即可。?

2、构建项目依赖

贴上 pom 文件引入的 Maven 依赖包,因为是继承上面定义的父级项目,所以这里只需要声明 Spring Cloud 项目需要用到的依赖包即可。

<?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>backend-parent</artifactId>
        <groupId>org.liurb</groupId>
        <version>0.0.1</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>backend-cloud-parent</artifactId>
    <version>0.0.1</version>
    <packaging>pom</packaging>
    <name>backend-cloud-parent</name>
    <description>backend-cloud-parent</description>

    <properties>
        <spring-cloud.version>2021.0.4</spring-cloud.version>
    </properties>

    <dependencyManagement>

        <dependencies>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>

    </dependencyManagement>

</project>

需要特别注意的是 type 标签是以 pom 的方式引入,而 scope 标签为 import ,即强制子模块使用与父模块完全一致的版本号。

三、父级项目打包

父级项目已经构建好了,那么要怎么使用这两个父级项目呢?答案是将它们打包,通过其他项目即可通过?Maven 依赖引入。

目前创建好的两个父级项目的结构如下。

?一般生产上,我们都会将这种项目放在服务器私服仓库中(如阿里云的云效),因为我们这边只是演示,所以我们只需要打到本地仓库即可。

打开 Idea 右侧的 Maven 标签,点开 backend-parent ,双击 package ,执行完成后,双击 install ,即可安装到本地仓库。

这里是从根(root)项目打包,那么将会子项目 backend-cloud-parent 也一块打包,如果只需要将子项目打包,那么就打开对应的项目下的命令进行打包。

这时候,打开本地仓库,就可以看到我们刚才打包的两个目录。

依次打开 backend-parent 目录,会发现里面只有一个 pom 文件,因为我们定义的类型就是 pom?

到此,属于自己的父级项目即构建完成,以后创建子项目时,我们就可以引入这个父级项目。

最后附上项目代码?Backend-Parent

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:27:04  更:2022-10-08 20:29:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:49:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码