Maven:继承和聚合

news2024/12/1 0:26:34

Maven高级

分模块设计和开发

如果在我们自己的项目中全部功能在同一个项目中开发,在其他项目中想要使用我们封装的组件和工具类并不方便

不方便项目的维护和管理
项目中的通用组件难以复用

所以我们需要使用分模块设计

分模块设计

请添加图片描述

在项目设计阶段,可以将大的项目拆分成若干模块,按功能拆分,每个模块都是独立的.

先针对模块功能进行设计,再进行编码.

方便项目的管理和维护
方便模块间的相互调用和资源共享

分模块设计的优势

如果直接对项目进行依赖,因为会将所有工具类全部依赖进来,会影响性能,同时相当于整个业务代码全部公开,非常不安全.

继承

创建一个父工程,让其他模块对其进行继承,这样就可以将各个模块中共有的依赖都提取到父工程中进行配置,这样子工程都会继承父工程的依赖.

继承关系

Maven不支持多继承

因为Spring工程存在统一的父工程spring-boot-starter-parent

如果继承spring-boot-starter-parent就无法继承我们自定义的父工程tlias-parent

所以我们可以将统一父工程交给父工程去继承,如下所示

请添加图片描述

注:父工程打包的方式必须为pom

<packaging>pom</packaging>
Maven的打包方式

jar:默认打包方式,内嵌tomcat运行

war:普通web程序的打包方式,需要部署在外部的tomcat服务器中运行

pom:父工程或聚合工程,不写代码仅进行依赖管理

父子工程结构

可以同级也可以将子工程写在父工程下

版本锁定

当一个依赖不是被所有模块使用时,我们没有必要将其添加到

<dependencies></dependencies>

中,可以使用

<dependencyManagement></dependencyManagement>

进行统一的依赖版本管理,不会使依赖被所有子工程引用,同时使需要这些依赖的子模块引用更方便,版本统一.

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <jjwt.version>0.9.1</jjwt.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jjwt.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

在父工程中的中指定版本,通过在

<properties></properties>

中我们可以将版本抽取成变量,格式如上所示,这个版本变量${…}可以直接在父工程和子工程中使用.

通过这样的版本统一设置,我们就可以在子工程中无需设置版本,只需要groupId和artifactId就可以进行依赖

<dependency>
     <groupId>io.jsonwebtoken</groupId>
     <artifactId>jjwt</artifactId>
</dependency>

聚合

对有继承关系的多个工程进行打包时,关系错综复杂,是可能出现问题的(找不到依赖,找不到模块等等),需要先将子模块先执行install到本地仓库,再对父模块进行打包.

如果使用maven的聚合

就可以实现对项目的一键构建(清理,编译,测试,打包安装等)
聚合:将多个模块组织成一个整体,同时进行项目的构建

无需根据依赖关系手动构建,可以直接在聚合工程上构建

聚合工程:一个不具有业务功能的"空"工程(有且仅有一个pom文件),其中没有代码,一般就是继承关系中的父工程

聚合的实现

在聚合工程中的pom文件中,在modules标签中对模块进行整合

<modules>
	<module>../tlias-pojo</module>
  	<module>../tlias-utils</module>
  	<module>../tlias-web-management</module>
</modules>

聚合之后子模块会在聚合在聚合工程下

只要对聚合工程执行package打包命令就会对聚合的所有模块执行打包命令,即一键构建.

继承和聚合的对比

聚合用于快速构建项目

继承用于简化依赖的配置和统一管理依赖

相同点

聚合和继承的pom文件打包方式均为pom,聚合工程和继承的父工程往往为同一个工程

聚合和继承都属于设计型模块,并无实际模块内容

不同点

聚合是在聚合工程中进行关系配置,可以感知到参与聚合的模块(modules中写明了参与聚合的模块)

继承是在子模块中进行配置(写明parent),父模块无法感知到哪些子模块继承了自己

私服

快照版本(snapshot):存入快照仓库

不断的开发更新,可以对同一个快照版本进行多次发布

<version>1.0-SNAPSHOT</version>

发布版本(release):存入发布仓库

相对稳定的对外版本

<version>1.0</version>

Central仓库

存储从中央仓库下载的依赖

快照版会用最新版本覆盖

发布版不会被覆盖

私服配置

在本地maven的设置中配置依赖下载地址

在本地maven的设置中配置私服的访问用户名和密码

在maven工程pom文件中配置上传地址

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

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

相关文章

欢乐钓鱼大师攻略,兑换码怎么操作?

在努力钓鱼的同时&#xff0c;别忘了收获丰富的奖励和成就&#xff0c;这将是你在游戏中的最大动力和满足感。 完成任务和挑战&#xff1a; 游戏中有各种各样的任务和挑战等着你去完成。通过完成这些任务和挑战&#xff0c;你可以获得丰富的奖励和成就&#xff0c;提升自己的钓…

[Java EE] 文件IO(一):文件概念与文件系统操作

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

android studio配置Http Proxy

1、问题描述&#xff1a; Error:Unable to tunnel through proxy. Proxy returns “HTTP/1.1 400 Bad Request” 解决&#xff1a;HTTP Proxy设置 1.File→Settings…→System Settings → HTTP Proxy → Auto-detect proxy settings”&#xff1b; 2.勾选下方“Automatic prox…

景源畅信电商:经营抖店需要电脑吗?

经营抖店是否需要电脑?这个问题看似简单&#xff0c;实则关乎着商家的运营效率和成本投入。在当前数字化、网络化的商业环境中&#xff0c;电脑已经成为了不可或缺的工具。那么&#xff0c;经营抖店究竟是否需要电脑呢?答案是肯定的。 一、高效处理订单 电脑能够高效地处理大…

【408真题】2009-03

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

【Linux】- Linux环境变量[8]

目录 环境变量 $符号 自行设置环境变量 环境变量 环境变量是操作系统&#xff08;Windows、Linux、Mac&#xff09;在运行的时候&#xff0c;记录的一些关键性信息&#xff0c;用以辅助系统运行。在Linux系统中执行&#xff1a;env命令即可查看当前系统中记录的环境变量。 …

代数结构:5、格与布尔代数

16.1 偏序与格 偏序集&#xff1a;设P是集合&#xff0c;P上的二元关系“≤”满足以下三个条件&#xff0c;则称“≤”是P上的偏序关系&#xff08;或部分序关系&#xff09; &#xff08;1&#xff09;自反性&#xff1a;a≤a&#xff0c;∀a∈P&#xff1b; &#xff08;2…

将Flutter程序打包为ios应用并进行安装使用

如果直接执行flutter build ios: Building com.example.myTimeApp for device (ios-release)...════════════════════════════════════════════════════════════════════════════════No vali…

Multisim 14简易三人抢答器电路设计

multisim multisim&#xff0c;即电子电路仿真设计软件。Multisim是美国国家仪器&#xff08;NI&#xff09;有限公司推出的以Windows为基础的仿真工具&#xff0c;适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式&#xff0…

汇昌联信:做拼多多网点需要具备什么能力?

在当前电商行业高速发展的背景下&#xff0c;拼多多以其独特的商业模式迅速崛起&#xff0c;成为众多创业者和商家关注的焦点。想要运营一家成功的拼多多网点&#xff0c;不仅需要对平台规则有深入的了解&#xff0c;还需要具备多方面的能力。这些能力是确保网点稳定运营并实现…

【安全每日一讲】加强数据安全保护 共享数字化时代便利

前言 数据安全是数据治理的核心内容之一&#xff0c;随着数据治理的深入&#xff0c;我不断的碰到数据安全中的金发姑娘问题&#xff08;指安全和效率的平衡&#xff09;。 DAMA说&#xff0c;降低风险和促进业务增长是数据安全活动的主要驱动因素&#xff0c;数据安全是一种资…

47.乐理基础-音符的组合方式-连线

连线与延音线长得一模一样 它们的区别就是延音线的第三点&#xff0c;延音线必须连接相同的音 连线在百分之九十九的情况下&#xff0c;连接的是不同的音&#xff0c;如下图的对比&#xff0c;连线里的百分之1&#xff0c;以现在的知识无法理解&#xff0c;后续再写 在乐谱中遇…

【MySQL】聊聊你不知道的前缀索引原理以及使用场景

背景 在本周的时候&#xff0c;接到一个需求&#xff0c;需要通过加密后的身份证 md5 去数据库里匹配。由于业务方存储的是身份证 md5username 构建的一列&#xff0c;并且没有加索引。 解决方案&#xff1a;1.新建一列 md5的列&#xff0c;加索引 2.对现有的列进行加前缀索引…

数组实现循环队列

1、分析 循环队列最主要的特点为当前面的空间被pop后&#xff0c;后面的数据可以插入到前面空余的数据中去&#xff1b; 所以最难的部分为判断什么时候为空什么时候为满&#xff1a; a、空满问题 我们先来分析当数据满时&#xff0c;head和tail相等&#xff08;tail认为是指…

C++:9.scanf扩展——原来这么好用!

——scanf&#xff1a;我**不常用了&#xff1f; 有一天看到了一道题&#xff1a; C 输入一个时间&#xff0c;输出它属于&#xff0c;白天&#xff0c;下午还是黑夜。 输入样例&#xff1a; 15:20 00:00 13:14 05:20 11:45 14:00 ……??? 大胆题目小瞧我的编程水平!!!!!…

什么是 IIS

什么是 IIS 一、什么是 IIS二、IIS 的功能三、IIS 几点说明四、IIS 的版本五、IIS 常见的组合 欢迎关注【云边小网安】 一、什么是 IIS IIS&#xff1a;指 Internet Information Services &#xff0c;是一种由微软公司开发的 Web 服务器应用程序。IIS&#xff1a;是一种 Web …

GPU prompt

提问&#xff1a; GPU是如何与CPU协调工作的&#xff1f; GPU也有缓存机制吗&#xff1f;有几层&#xff1f;速度差异是多少&#xff1f; GPU渲染流程有哪些阶段&#xff1f;他们的功能分别是什么&#xff1f; Early-Z技术是什么&#xff1f;发生在哪个阶段&#xff1f;这个…

MySQL表死锁查询语句

步骤1&#xff1a;查询表死锁的sql语句&#xff1a; SELECT * FROM information_schema.PROCESSLIST where length(info) >0 ; 或 SELECT * FROM information_schema.INNODB_TRX; 步骤2&#xff1a;删除 kill "对应的线程id"

hadoop克隆虚拟机

克隆虚拟机 小白的Hadoop学习笔记 2024/5/11 9:42 文章目录 克隆虚拟机准备好模板机克隆* 记得先将模板机关机 配置ipifcfg-ens33hostnamehosts重启 测试是否成功ifconfigping xshell 准备好模板机 克隆 * 记得先将模板机关机 下一页>>下一页 选择创建完整克隆 起名字…

【大模型赋能开发者】海云安入选数世咨询LLM驱动数字安全2024——AI安全系列报告

近日&#xff0c;国内知名数字产业领域第三方调研咨询机构数世咨询发布了LLM驱动数字安全2024——AI安全系列报告。报告通过调研、公开信息收集等方式对目前十余家已具备LLM相关的应用能力安全厂商对比分析出了这一领域当前的产业现状并进行了各厂商的能力展示。 海云安凭借近…