maven 依赖 传递 优先级

50 篇文章 0 订阅

maven 依赖 传递

就是在 本maven 的pom文件 中 写上 别的maven pom文件的坐标

<groupId>组id 项目的包名</groupId>
<artifactId>项目的id名 就是项目的名称</artifactId>
<version></version>

直接依赖 ,A依赖 传递 B依赖 中间没有其他的依赖传递

间接依赖,A依赖 传递 B依赖 再传递 C依赖
A依赖 与 C依赖 就是 间接的依赖关系
因为 在他们中间 还有隔着别的依赖传递

依赖会有冲突

在依赖传递过程中产生了冲突,优先法则

(1)路径优先:当依赖中出现相同资源时,层级越深,优先级越低,反之则越高
(2)声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖靠后的
(3)特殊优先:当同级配置了相同资源的不同版本时,后配置的覆盖先配置的

可选依赖

这就是 将依赖隐藏起来 为了不被别的maven项目中pom文件识别到。

<optional>true</optional>

将这个写到 具体tar依赖配置的最后一行
设置成 true 就会隐藏不会被别的pom文件识别。

排除依赖

就是将pom文件里设置的依赖删除掉

<exclusions>
<exclusion>
<groupId>junit<groupId/>
<artifactId>junit<artifactId/>
</exclusion>
<exclusions/>

注意:这里不写依赖的版本号 version 标签
排除依赖是断开依赖的传递 在依赖传递后用的
可选依赖是为了不被识别 在依赖传递前用的

依赖范围

依赖的jar默认情况可以在任何地方可用,可以通过scope标签设定其作用范围

这里的范围主要是指以下三种范围
(1)主程序范围有效(src/main目录范围内)
(2)测试程序范围内有效(src/test目录范围内)
(3)是否参与打包(package指令范围内)

scope标签的取值有四种:compile,test,provided,runtime
scope 是范围的意思
compile 在任何范围内都能用 适合 log4j
test 只能用在测试中 适合 junit
provided 不能打包,可以主代码与测试代码中使用 适合 servlet-api
runtime 只能在打包时候用 适合 jdbc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普希托夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值