首页 > 其他分享 >9--Maven高级 详解

9--Maven高级 详解

时间:2024-09-18 20:50:49浏览次数:3  
标签:依赖 聚合 工程 -- 私服 Maven 仓库 详解 模块

目录

分模块设计与开发

继承与聚合

继承与聚合对比

私服


分模块设计与开发

分模块设计就是将项目按照功能/结构拆分成若干个子模块,方便项目的管理维护、拓展,也方便模块键的相互调用、资源共享。

实体类只用到了lombok依赖

utils使用JWT令牌、阿里云OSS、lombok、WEB开发起步依赖

1). 什么是分模块设计:将项目按照功能拆分成若干个子模块

2). 为什么要分模块设计:方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享

3). 注意事项:分模块设计需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,

然后进行拆分

继承与聚合

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

作用:简化依赖配置、统一管理依赖

Maven打包方式:

jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)

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

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

注意:

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

relativePath指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程)。

../ 代表的上一级目录

问题:如果项目拆分的模块比较多,每一次更换版本,我们都得找到这个项目中的每一个模块,一个一个的更改。 很容易就会出现,遗漏掉一个模块,忘记更换版本的情况。那我们又该如何来解决这个问题,如何来统一管理各个依赖的版本呢?

答案:Maven的版本锁定功能。

注意

在父工程中所配置的 <dependencyManagement> 只能统一管理依赖版本,并不会将这个依赖直接引入进来。 这点和 <dependencies> 是不同的。

子工程要使用这个依赖,还是需要引入的,只是此时就无需指定 <version> 版本号了,父工程统一管理。变更依赖版本,只需在父工程中统一变更。

问题: <dependencyManagement> 与 <dependencies> 的区别是什么?

答案

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

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

maven的聚合就可以轻松实现项目的一键构建(清理、编译、测试、打包、安装等)。

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

聚合工程:一个不具有业务功能的“空”工程(有且仅有一个pom文件) 【PS:一般来说,继承关系中的父工程与聚合关系中的聚合工程是同一个】

作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)

在maven中,可以在聚合工程中通过 <moudules> 设置当前聚合工程所包含的子模块的名称。可以在 tlias-parent中,添加如下配置,来指定当前聚合工程,需要聚合的模块:

<!--聚合其他模块-->
<modules>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>
一键清理 clean 、一键编译 compile 、一键测试 test 、一键打包 package 、一键安装 install 等

继承与聚合对比

作用

聚合用于快速构建项目

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

相同点:

聚合与继承的pom.xml文件打包方式均为pom,通常将两种关系制作到同一个pom文件中

聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些

继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

私服

当B团队在maven项目的pom.xml配置文件中引入了依赖的坐标之后,maven是如何查找这个依赖的? 查找顺序为:

1). 本地仓库:本地仓库中是没有这个依赖jar包的。

2). 远程中央仓库:由于该模块时自己公司开发的,远程仓库中也没有这个依赖。

私服:是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,

用于解决团队内部的资源共享与资源同步问题。

依赖查找顺序:

  • 本地仓库
  • 私服仓库
  • 中央仓库

资源上传与下载,需要做三步配置,执行一条指令。

第一步配置:在maven的配置文件中配置访问私服的用户名、密码。

第二步配置:在maven的配置文件中配置连接私服的地址(url地址)。

第三步配置:在项目的pom.xml文件中配置上传资源的位置(url地址)。

配置好了上述三步之后,要上传资源到私服仓库,就执行执行maven生命周期:deploy。

私服仓库说明:

  • RELEASE:存储自己开发的RELEASE发布版本的资源。
  • SNAPSHOT:存储自己开发的SNAPSHOT发布版本的资源。
  • Central:存储的是从中央仓库下载下来的依赖。

项目版本说明:

  • RELEASE(发布版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
  • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

标签:依赖,聚合,工程,--,私服,Maven,仓库,详解,模块
From: https://blog.csdn.net/2301_77946674/article/details/142340736

相关文章

  • 02. Python基础知识
    一、注释  在开发程序过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当添加注释,以辅助自己或其他开发人员解读代码。注释是给程序员看的,为了让程序员方便阅读代码,解释器会忽略注释。在Pyton中,注释分为单行注释和多行注释。单行注释:在Python中,使用“#”作为单......
  • 当前标识(IIS APPPOOL\.NET v4.5)没有对“C:\Windows\Microsoft.NET\Framework64
    当前标识(IISAPPPOOL\.NETv4.5)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\TemporaryASP.NETFiles”的写访问权限。初学者在使用ISS创建网站时是不是也遇到过类似的问题,这可能是执行当前Web请求期间生成了未经处理的异常,主要就是设置对TemporaryASP.NE......
  • 高校能耗管控方案如何做到节能减排
    1高校节能监管体系建设的必要性根据相关统计,大中型城市中,高等教育机构的建筑占公共建筑总量的3%至7%,但其能耗却占到建筑总能耗的30%。此外,高校建筑的单位面积能耗是住宅建筑的5至10倍。高校的总能耗大约占全社会总能耗的10%,显示出较高的用能水平。在构建节约型社会的大背景下......
  • 浅谈红外测温技术在变电站运维中的应用
    0引言随着市场经济的繁荣发展,社会对电力的需求持续增长。城市供电网络的规模和用电设备的总量也在不断扩大,这导致城市电力系统中潜在的网络安全隐患日益增多。作为电力系统核心组成部分的变压器,其安全、稳定的工作直接关系到电能的质量和供应的稳定性。红外检测温度技术能够在......
  • 基于STM32单片机的OPENMV颜色识别小球追踪系统设计
    基于STM32单片机的OPENMV颜色识别小球追踪系统设计0、毕业设计选题原则说明(重点)1、项目简介1.1、系统功能1.2、演示视频2、部分电路设计2.1、STM32单片机核心板电路设计2.2、openmv使用说明2.3、stm32与openmv通信电路设计2.4、OLED液晶显示电路设计2.5、二维云台控制电......
  • c++运算符
    #include<iostream>//运算符usingnamespacestd;intmain(){inta=9;intb=6;cout<<"这是加法:"<<a+b<<endl;cout<<"这是减法:"<<a-b<<endl;cout<<"这是乘法:"<<......
  • Vue中实现触底加载效果
    Vue中实现触底加载效果在移动应用和Web应用中,触底加载是一种常见的功能,它允许用户在滚动到页面底部时自动加载更多内容。这种技术可以提高用户体验,减少用户的操作步骤。本文将介绍如何在Vue中实现触底加载效果。思路使用IntersectionObserverAPI:这是一个用于异步检测目......
  • Python, 您好世界
    01Python基础概念1-Python语言介绍Python的产生:1991年吉多·范罗苏姆Python的优点:简单易学、全球第一、优雅、应用场景丰富(就业方向多)Python的缺点:执行效率低、第三方库太多2-编程语言的概念什么是编程语言:人类和计算机交流的一种专有领域语言编程语言的工作原理......
  • 自动化测试 RobotFramework-ride使用相关总结
    开发环境win11家庭中文版Python3.9.13robotframework6.1.1说明:为了方便的使用robot命令,安装好robotframwork后,修改系统环境,添加robot.exe(PYTHON_HOME/Scripts/robot.exe)所在路径到系统环境变量path安装参考连接:https://github.com/robotframework/robotframework/blob/mast......
  • 读书笔记(14)《敢问路在何方》
    序言1982年的春节,电视系列片《西游记》开始动工。那时距离现在,已经过去了整整三十年!八十年代,是拼搏的年代,是奋斗的年代,是奉献的年代!拍摄《西游记》系列片,用去了六年的时间。这段时间,我和全剧组的同志们一起,跋山涉水,茹苦含辛,往返于祖国的北国南疆,其中甘苦不胜枚举。《西游记》剧组......