Maven高级——继承与聚合——继承关系实现

news2024/11/29 7:44:52

将Maven拆分成多个项目之后又会引发新的问题,继承与聚合就是用来解决这些问题。

这里的继承就像java中类和类之间的继承一样,工程之间也是可以实现继承的。

继承解决的问题

在之前拆分的三个模块中每个都配置了一个lombok的依赖,每一个maven模块里面都要重新实现一次,配置较繁琐.

  解决方案

创建一个tlias-parent父工程,将那些子工程当中共有的以来都定义在子工程当中。然后子工程直接继承父工程的配置信息一般指的都是依赖.

springboot项目都会有一个<parent>标签继承自同一个父工程。 

在springboot中会有如下的一个父工程坐标。

Maven当中常见的三种打包方式

在Maven中,一个工程只能继承自一个父工程。

继承关系实现

 所以原项目的springboot父工程可以由tlias-parent来继承,然后原项目再来继承tlis-parent。

这样就通过多重继承解决该问题。 ​​​​​​​​​​​​​​

第一步:新建一个父工程 

按照之前新建项目时的方式新建一个与其他级的模块同级别的项目。名为tlias-parent 

 然后pom.xml文件里面新加上如下依赖,一个是指定打包方式为pom,一个是springboot的父工程。    <relativePath/>使用单闭合的话表示让它在本地仓库查找父工程。


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

    <packaging>pom</packaging>

配置原项目的父工程坐标

在tlias-parent的pom.xml文件中就有这个父工程的坐标。

    <parent>
        <groupId>com.itheima</groupId>
        <artifactId>tlias-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../tlias-parent/pom.xml</relativePath> <!-- lookup parent from repository -->
    </parent>

这里需要知道父工程的pom文件的位置,这里直接使用相对位置。

在POJO模块和utlis模块的继承关系的配置是一样的,所以可以直接把上面这个坐标放到另两个模块的pom.xml文件中。

在父工程配置各个子工程的共有依赖

直接把子工程POJO的整个依赖项都移植到父工程中去,就可以看见右边的maven中依赖项消失又出现。

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
    </dependencies>

在tlias-utils中会出现一个警告表示依赖重复

然后把三个子工程的lombok依赖都删除即可。

小结 

 右边才是项目时真正用到的父子工程结构。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/607073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARMv8 SIMD和浮点指令编程】NEON 减法指令——减法也好几种

向量减法包括常见的普通加指令&#xff0c;还包括长减、宽减、半减、饱和减、按对减、按对加并累加、选择高半部分结果加、全部元素加等。 1 SUB 减法&#xff08;向量&#xff09;&#xff0c;该指令从第一个源 SIMD&FP 寄存器中的相应向量元素中减去第二个源 SIMD&…

旧改快讯--宝安又一项目计划失效:有效期内专规未获批

西井工业区城市更新单元计划&#xff08;失效&#xff09;公告 西井工业区城市更新单元原列入了《2019年深圳市宝安区城市更新单元五批计划》&#xff0c;更新单元计划有效期3年9个月&#xff0c;自2019年8月12日起至2023年5月11日止&#xff1b;该项目在计划有效期内更新单元规…

GAN培训挑战:用于彩色图像的DCGAN

GAN培训挑战&#xff1a;用于彩色图像的DCGAN 1. 效果图2. 原理2.1 用于彩色图像的 DCGAN2.3 准备数据2.4 生成器2.5 鉴别器2.6 DCGAN模型及回调函数2.7 GAN培训挑战2.8 未能聚合&#xff08;Non-convergence&#xff09;2.9 模式崩溃&#xff08;Mode collapse&#xff09;2.1…

chatgpt赋能python:Python取元素里的数字

Python取元素里的数字 Python是一种高级编程语言&#xff0c;它的使用范围非常广泛&#xff0c;在数据科学、人工智能、网络编程等领域都有很多应用。在Python程序中&#xff0c;我们经常需要从字符串或列表中提取数字&#xff0c;这篇文章将介绍在Python中如何取元素里的数字…

Anolis OS8 磁盘扩容

最近学习的时候&#xff0c;使用Vmware安装了AnolisOS8进行测试&#xff0c;随着学习的深入&#xff0c;组件安装越来越多&#xff0c;磁盘不够用了&#xff0c;但是安装的组件又太多&#xff0c;重新装个虚拟机又得重新装各种组件。所以决定对磁盘进行扩容&#xff0c;在这里做…

chatgpt赋能python:Python如何只提取文本中的数字?

Python如何只提取文本中的数字&#xff1f; 随着数字化时代的到来&#xff0c;数字成为了我们生活中不可或缺的一部分。我们每天都需要处理大量的数字&#xff0c;比如账单、统计数据等等&#xff0c;这些数字都散落在各个文本中。如果我们需要将这些数字提取出来&#xff0c;…

计算机视觉:目标检测理论及实战

有关锚框的部分可以看我的另一篇文章&#xff1a;点击这里。下文不再赘述 文章目录 多尺度目标检测多尺度锚框 数据集单发多框检测(SSD)模型设计类别预测层边界框预测层连结多尺度的预测高和宽减半块基本网络块完整的模型 训练导入数据集定义损失函数Utils函数(用于为每个锚框标…

【内网穿透】Linux本地搭建GitLab服务器

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自cpolar极点云文章&#xff1a;Linux搭建GitLab私有仓库&#xff0c;并内网穿透实…

chatgpt赋能python:Python取款:让你的银行账户管理更智能

Python取款&#xff1a;让你的银行账户管理更智能 介绍 Python不仅是一种全球广泛应用的计算机编程语言&#xff0c;而且还拥有很多适合财务管理和数据处理的工具&#xff0c;用于提高效率和减少错误。本文将重点介绍如何使用Python自动管理银行账户的取款&#xff0c;以及它…

chatgpt赋能python:Python句点:为什么它如此重要?

Python句点&#xff1a;为什么它如此重要&#xff1f; 介绍 Python是一种高级编程语言&#xff0c;它以简单且易理解的语法而闻名。Python中有一种符号——句点&#xff08;.&#xff09;&#xff0c;它在Python中扮演着非常重要的作用。在本文中&#xff0c;我们将深入研究P…

chatgpt赋能python:Python只取小数

Python只取小数 Python是一种高级编程语言&#xff0c;被广泛应用于数据科学、人工智能、Web开发等领域。在数据分析和计算中&#xff0c;往往需要只保留小数&#xff0c;本文将介绍如何使用Python只取小数&#xff0c;并提供相关代码。 什么是小数? 在数学中&#xff0c;小…

Golang每日一练(leetDay0086) 回文链表、删除链表节点

目录 234. 回文链表 Palindrome Linked-list &#x1f31f; 237. 删除链表中的节点 Delete Node In a Linked-list &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

安卓逆向 -- Frida环境搭建(HOOK实例)

一、开启抓包程序Postern和Charles 二、目标分析 打开jadx&#xff0c;把apk拖拽进去&#xff0c;全局搜索"pwd"&#xff0c;挨个分析&#xff0c;明显来自于这条代码&#xff0c;后面是md5&#xff0c;可以判断pwd加密是md5&#xff0c;我们hook该地方 三、Frida环…

【23种设计模式】观察者模式(Observer Pattern)

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

二叉树的链式结构 - C语言(含有大量递归)

目录&#xff1a; &#x1f354;前言 &#x1f354;二叉树链式结构的实现 &#x1f35f;基本构架 &#x1f60d;代码&#xff1a; &#x1f354;二叉树的遍历 &#x1f35f;前序遍历 &#x1f35f;中序遍历 &#x1f35f;后序遍历 &#x1f35f;层序遍历 &#x1f53…

chatgpt赋能python:Python快捷键:轻松运行你的代码

Python快捷键&#xff1a;轻松运行你的代码 Python是一种广泛使用的编程语言&#xff0c;因为它易于学习、易于使用&#xff0c;并提供了许多强大的库和框架。但是&#xff0c;在日常使用中经常需要重复与代码交互的操作&#xff0c;这可能会降低编程效率。使用Python快捷键可…

day43:1049. 最后一块石头的重量 II; 474. 一和零; 494.目标和:有多少种方式装满背包

01背包 [1049. 最后一块石头的重量 II (与416分割等和子集类似)](https://leetcode.cn/problems/last-stone-weight-ii/submissions/436837708/)1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:从后往前遍历5. 代码 494.目标和:有多少种方式装满背包1. dp数组…

皮卡丘xss之htmlspecialchars、xss之href输出、xss之js输出

1.xss之htmlspecialchars htmlspecialchars()函数的功能如下&#xff1a; htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是&#xff1a; &#xff08;1&#xff09;& &#xff08;和号&#xff09;成为 &amp; &#xff08;2&#xff09;…

【编译、链接、装载三】编译器——语法分析、词法分析、语义分析、编译器后端

【编译和链接三】编译器——语法分析、词法分析、语义分析、编译器后端 内容总结一、词法分析&#xff08;Lexical Analysis&#xff09;二、语法分析 &#xff08;Syntactic Analysis, or Parsing&#xff09;三、语义分析&#xff08;Semantic Analysis&#xff09;四、编译器…

chatgpt赋能python:Python取出元素详解

Python取出元素详解 在Python编程中&#xff0c;常见到需要取出某个列表、元组或字典中的元素。本文将详细介绍Python如何取出这些元素&#xff0c;并提供相关代码和案例。 取出列表元素 列表是Python编程中最常见的数据结构&#xff0c;下面是列表的定义方式&#xff1a; …