Maven

本文深入探讨Maven作为项目管理工具的角色,解析其基于项目对象模型(POM)的构建、报告和文档管理机制。文章详细阐述Maven的依赖管理和版本控制策略,包括本地和远程仓库的工作原理,以及如何通过顶级POM文件的dependencyManagement元素统一管理子项目的依赖版本。

Maven

1、Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
2、一般公司都有自己的maven私服的地址: 根据groupId和artifactId来寻找相应的pom文件和依赖包即可。
cn.company
projectName

在项目的顶层POM文件中,会有dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用再次声明版本号。
Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。所以之后在pg,redis等等的项目中间都没有直接说明相关依赖的版本号。因为正顶级pom文件中已经声明了。

对于Maven来说,仓库只分为两类:本地仓库和远程仓库。

当Maven根据坐标寻找构件的时候,它首先会查看本地仓库,如果本地仓库存在此构件,则直接使用;
如果本地仓库不存在此构件,Maven就会去远程仓库查找,发现需要的构件,下载到本地仓库再使用。
如果本地仓库和远程仓库都没有,Maven就会报错。

当依赖以以下两种方式声明在顶级pom文件中时,两者的区别:
1、dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项,并且是全部继承。(可将多个子项目的共同依赖项写在顶级项目的pom文件中,那么在子项目中就不用再一一重复声明了)

2、dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。(用于不是所有子项目都需要该依赖,只是部分子项目需要该依赖,规定这部分子项目引入依赖的版本号)

总结:
中的jar直接加到项目中,管理的是依赖关系(如果有父pom,子pom,则子pom中只能被动接受父类的版本);主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值