目录

​编辑

分模块设计与开发

拆分策略

继承与聚合

版本锁定

聚合

作用

实现

Maven中继承与聚合的联系与区别?

联系

区别

私服


分模块设计与开发

将一个大项目拆分成若干个子模块,方便项目的管理维护,扩展,也方便模块间的相互引用,资源共享

拆分策略

策略一:按照功能模块拆分,比如:公共组件、商品模块、搜索模块、购物车模块、订单模块等。

策略二:按拆分,比如:公共组件、实体类、控制层、业务层、数据访问层。

策略三:按照功能模块 + 层拆分。

继承与聚合

继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。

第一步:创建父工程,设置打包方式为pom,并继承spring-boot-starter-parent

第二步,在子工程中配置继承关系

在子工程中通过parent标签来设置继承关系,来指定当前这个子工程要继承我们所创建的这个父工程,要指定父工程的坐标,通过relativePath来指定父工程的相对路径,那如果你不指定,默认的是从本地仓库或者远程仓库来查找,一旦设置了继承关系,这个组织的名字也会从父工程商继承下来,所以子工程中配置的groupId是可以省略的

第三步,在父工程中配置各个工程的共有依赖

在子工程中,配置了继承关系后,坐标中的groupId是可以省略的,因为会自动继承父工程。

若父子工程都配置了同一个依赖的不同版本,以子工程为准

版本锁定

在maven中,可以在父工程的pom文件中通过<dependencyManagement>来同意管理依赖版本

<dependencies>是直接依赖,在父工程配置了依赖,子工程会直接继承下来

<dependencyManagement>是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

聚合

将多个模块组织成一个整体,同时进行项目的构建

聚合工程师一个不具有业务功能的“空”工程,有且仅有一个pom文件。tlias-parent既可以作为父工程,也可以作为聚合工程,通常来说父工程和聚合工程都是同一个工程,

作用

聚合的作用就是快速构建项目,在构建项目的过程中,我们是不需要考虑工程间的依赖关系的,我们直接在这个聚合工程上进行操作就可以了,比如我们要安装,我们直接在聚合工程上安装,那么下面的这些个子模块都会全部的进行安装

实现

在Maven中可以通过<modules>设置当前聚合工程所包含的子模块名称

Maven在执行聚合操作时,会自动的根据模块之间的依赖关系来设置构建的顺序,与我们在聚合工程中所配置的这个模块的顺序是没有关系的

如果我们配置好了聚合关系之后,指定了这个聚合工程要聚合哪些模块之后,在右侧的Maven面板中只会展示这个tlias-parent,紧接着将它展开才会看到他里面聚合的其他模块

接下来我们要进行操作的时候就可以直接在聚合工程里进行操作,0比如要进行clean清理,就直接在聚合工程中进行清理

Maven中继承与聚合的联系与区别?

联系

都属于设计型模块,打包方式都位pom,不用写任何的Java代码,常将两种关系制作到同一个pom文件中

区别

继承可以用来简化依赖的配置,我们可以将子工程上公共的这部分依赖统一的抽取到父工程中,所以可以简化依赖的配置,也可以管理依赖的版本,而在配置继承关系的时候,它不是在父工程商配置,而是在子工程中配置他们之间的继承关系,这是继承

对于聚合来说,它的作用是为了快速构建项目,而不用去处理繁琐的模块之间的依赖关系,而对于这一层聚合关系来说,而它是在父工程上来配置当前这个聚合工程要聚合哪些模块的

私服

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程池的七个参数设计源于对高并发场景下资源管理、系统稳定性与性能平衡的深刻洞察

⚙️ 一、核心参数设计目标与解决的问题 参数设计目标解决的核心问题典型取值策略corePoolSize&#xff08;核心线程数&#xff09;维持常备线程资源避免频繁创建/销毁线程的开销&#xff0c;提高响应速度CPU密集型&#xff1a;N_cpu 1 IO密集型&#xff1a;2 N_cpu maximum…

少样本学习在计算机视觉中的应用:原理、挑战与最新突破

在深度学习的黄金时代&#xff0c;大量标注数据似乎成了算法性能的前提。然而在许多现实场景中&#xff0c;如医疗图像分析、工业缺陷检测、遥感识别、甚至个性化视觉服务中&#xff0c;高质量、成规模的标注数据往往昂贵、稀缺&#xff0c;甚至难以获得。这种场景正是**少样本…

github在线图床

github做的图床&#xff0c;原理是利用github API实现的在线上传&#xff0c;就一个页面&#xff0c;css和js都是集成在页面&#xff0c;相关信息保存在浏览器缓存中&#xff0c;配置一下即可使用 效果演示&#xff1a; github在线图床 打开网站填写下列信息 github用户名&a…

css-多条记录,自动换行与自动并行布局及gap兼容

实现这样的内容布局&#xff0c;当一段文案长度超过当前行的时候自动占据一行&#xff0c;其他相近的不超过一行自动放在一行间隔隔开 关键实现原理&#xff1a; 弹性布局容器&#xff1a; .history-container {display: flex;flex-wrap: wrap;gap: 12px; }使用flex-wrap: wr…

Redis 哨兵模式部署--docker版本

redis sentinel 简介 Redis Sentinel 是 Redis 官方提供的高可用&#xff08;HA&#xff09;解决方案&#xff0c;用于监控主从架构中的故障并自动完成故障转移。当主节点&#xff08;Master&#xff09;宕机时&#xff0c;Sentinel 能自动选举新的主节点&#xff0c;通知从节…

Java线程中的守护线程

Java线程中的守护线程在Java中&#xff0c;守护线程&#xff08;Daemon Thread&#xff09;是一种特殊类型的线程&#xff0c;它在后台运行&#xff0c;主要用于支持其他线程&#xff08;如用户线程&#xff09;的工作。守护线程不会阻止JVM&#xff08;Java虚拟机&#xff09;…

Flink-状态恢复-isRestore分析

isRestored 方法返回值依赖 restoredCheckpointId 是否为空&#xff1a;restoredCheckpointId 在算子状态句柄&#xff08;StreamOperatorStateHandler&#xff09;中从 StreamOperatorStateContext 获取并赋值给 StateInitializationContext&#xff08;该 context 就是 initi…

rk3128 emmc显示剩余容量为0

机器emmc 容量显示异常&#xff0c;显示剩余容量为0&#xff0c;这时候做了一个让 系统不检测GPP分区部分的操作&#xff0c;此问题才得以解决&#xff0c;如下&#xff1a; system/vold/DirectVolume.cpp -33,6 33,8 #include "VolumeManager.h"#include "Re…

WebAssembly国际化多语种支持

icu linux数据裁剪 先linux编译出所有的工具 mkdir build && cd build ../configure --prefix=$(pwd)/build_wasm/install --enable-static --disable-shared --with-data-packaging=static --enable-tools=yes --enable-extras=yes --e…

Ubuntu 安装 etcd 与 etcd-cpp-apiv3

目录 安装 etcd 安装 etcd-cpp-apiv3 安装 etcd sudo apt update sudo apt install etcd-server sudo apt install -y etcd-client 在 /etc/default/etcd 配置文件中配置&#xff0c;下面示例是单个服务器内进程之间交换信息且只有一个etcd节点。 #节点名称&#xff0c;默认为…

Spring Boot 集成 GeoTools 详解

目录 一、概述二、集成优势三、集成步骤四、使用场景五、案例&#xff1a;周边设施查询系统六、注意事项七、总结 一、概述 什么是 Spring Boot&#xff1f; Spring Boot 是由 Pivotal 团队开发的基于 Spring 框架的快速开发工具&#xff0c;它通过自动配置、起步依赖等特性简…

基础知识:mysql-connector-j依赖

mysql-connector-j 是 MySQL 官方提供的 Java 数据库连接驱动&#xff08;JDBC Driver&#xff09;&#xff0c;用于在 Java 应用程序中连接和操作 MySQL 数据库。它是 MySQL 8.0 版本之后的标准驱动名称&#xff0c;替代了旧的 mysql-connector-java。 一、新旧版本对比 驱动…

vscode remote-ssh 拓展免密访问 linux虚拟机

前置步骤&#xff0c;在linux安装好ssh并且win可以使用密码登录linux sudo apt install openssh-server -y 在win上检查密钥是否存在 检查公钥和私钥cat ~/.ssh/id_rsa.pubcat ~/.ssh/id_rsa 如果不存在&#xff0c;重新生成 ssh-keygen -t rsa -b 4096 重新执行 cat ~/.ssh/…

动手学深度学习-学习笔记【二】(基础知识)

文章目录 1、概述2、课程学习2.1、深度学习介绍2.2、安装2.3、数据操作2.4、数据预处理2.5、线性代数2.6、微积分2.7、自动微分2.8、概率2.8.1、基本概率论2.8.2、处理多个随机变量2.8.3、期望和方差 2.9、查阅文档 1、概述 本篇博客用来记录我学习深度学习的学习笔记&#xf…

瑞盟MS4554N/MS4554N1双向电平转换器重新定义混合电压系统连接

在电子设备的“心脏”——电路系统里&#xff0c;不同功能模块常因性能需求差异&#xff0c;采用差异化的供电电压&#xff1a;传感器用1.8V低功耗运行&#xff0c;主控芯片选3.3V高效处理&#xff0c;传统接口保留5V稳定传输……当这些“电压孤岛”需要互联时&#xff0c;一个…

二叉树题解——验证二叉搜索树【LeetCode】后序遍历

98. 验证二叉搜索树 一、算法逻辑&#xff08;逐步通顺讲解每一步思路&#xff09; 这段算法使用了一种递归的思路&#xff1a; 每个节点返回它所在子树的 最小值和最大值&#xff0c;并在返回的过程中检查 BST 的合法性。 ✅ 1️⃣ 定义递归函数 dfs(node)&#xff0c;其含…

Flink-Source算子点位提交问题(Earliest)

背景 最近在做 Flink 任务数据源切换时遇到 offset 消费问题&#xff0c;遂写篇文章记录下来。 切换时只修改了 source 算子的 topic&#xff0c;uid 等其他信息保持不变&#xff1a; 发布时&#xff0c;发现算子的消费者点位重置为earliest&#xff0c;导致消息积压。消息积…

如何录制带备注的演示文稿(LaTex Beamer + Pympress)

参考文献&#xff1a; Pympress 官网Avidemux 官网Audacity 官网FFmpeg 官网2025年度25大视频剪辑软件推荐2025最新音频降噪软件盘点&#xff0c;从入门到专业的6个高效工具如何用一段音频替换mp4视频格式的原有音频&#xff1f;免费简单易用的视频剪切编辑工具—AvidemuxFFmp…

VS Code 的 Copilot Chat 扩展程序

安装与启用 Copilot Chat 扩展 在 VS Code 中打开扩展市场&#xff08;快捷键 CtrlShiftX 或点击左侧活动栏的扩展图标&#xff09;。搜索“GitHub Copilot Chat”&#xff0c;点击安装。安装完成后需登录 GitHub 账户并授权 Copilot 权限。确保已订阅 GitHub Copilot 服务&am…

bash 脚本比较 100 个程序运行时间,精确到毫秒,脚本

脚本如下&#xff1a; #!/bin/bash# 设置测试次数 NUM_TESTS100 # 设置要测试的程序路径 PROGRAM"./your_program" # 替换为你的程序路径 # 设置程序参数&#xff08;如果没有参数则留空&#xff09; ARGS"" # 例如: "input.txt output.txt"#…