Maven概念知识

内容转载自:https://blog.youkuaiyun.com/u010425776/article/details/52027706
什么是Maven?
简单来说,Maven就是一款帮助程序员构建项目的工具,他会帮我们管理jar包。管理项目的生命周期。
基本命令?
-v : 查询maven版本。
compile:编译
将java源文件编译成class文件
test:测试项目
执行test目录下的测试用例
package:打包
将项目打包成jar或者war包
clean:
删除target文件夹
install:
将当前项目放到Maven的本地仓库中。供其他项目使用。

在maven中,坐标是jar包的唯一标识,maven通过坐标在仓库找到项目所需的jar包。
在这里插入图片描述
groupId:所需jar包的项目名,artifactId:所需jar包的模块名,version:所需jar包的版本号。

若多个项目中多个jar同时引入了相同的jar时,会产生依赖冲突,Maven采用了两种策略避免冲突:
短路优先:
在这里插入图片描述
声明优先:
若引用路径长度相同,在pom文件中谁先被声明,就使用谁。

聚合:
将多个项目作为module引入到pom文件中即可。

dependencyManagement
只能出现在父pom里
统一版本号
只是声明依赖,并不直接引入依赖,需要时在子项目中生命需要使用的依赖的groupId,artifactId信息,version可以省略。

scope
compile:编译依赖范围,在编译,测试,运行时都需要,依赖范围默认值
test:测试依赖范围,测试时需要。编译和运行不需要,如junit
provided:已提供的依赖范围,编译和测试时需要,运行时不需要,如servlet-api
runtime:运行时依赖范围,测试和运行时需要。编译不需要,例如面向接口编程,JDBC驱动实现jar
system:系统依赖范围,本地依赖,不在maven中央仓库。

依赖排除
使用exclusions来排除不需要使用jar。

依赖关系查看
mvn dependency:tree 命令会列出依赖关系树及各级依赖关系
mvn denpendency:analyze 分析依赖关系

maven的版本号常见有两种,一种是以-RELEASE 结尾,一种是以-SNAPSHOT几位。在企业私服中,会存在
snapshot快照仓库和release发布仓库,snapshot快照仓库用于保存开发过程中的不稳定版本,release仓库则是
用来保存稳定的发型版本。

maven会根君模块的版本号(pom文件中的version)是否带有-SNAPSHOT来判断是快照版本还是正式版本,根据
这个来判断是发布到快照仓库还是正式仓库中。

parent:模块间根据这个标签进行继承关系。
dependencyManagement 只进行版本管理,不会引入实际的jar包,而dependency则会下载实际的jar包。
jar包版本判断的两种路径:
如果dependencies里的dependency自己没有声明version元素,那么maven就会到denpendencyManagement里面去找有没有
对该atrifactId和groupId进行过声明,如果有就继承他,如果没有就会报错。
如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

dependency中还引入了scope,主要管理依赖的部署:
compile:缺省值,适用于所有阶段,会随着项目一起发布。
provided:类似于compile,期望JDK,容器或使用者会提供这个依赖,如servlet.jar。因为这个servlet.jar会在容器里或者tomcat里存在,这个jar不会被打包。
runtime:只在运行时使用,如JDBC驱动,适用于运行和测试阶段。
test:只用在测试阶段,不会随项目发布。
system:类似provided,需要显式提供包含依赖的jar,maven不会再仓库里查找他。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值