Maven坐标、依赖范围、依赖传递

一、Maven坐标

Maven的主要组成部分:
1、groupId:定义当前Maven项目隶属项目
2、artifactId:定义实际项目中的一个模块
3、version:定义当前项目的当前版本
4、packing:定义该项目的打包方式
为什么要使用坐标:
1、Maven拥有大量的构建(如:很多开源的Java框架),所以需要一个用来唯一标识一个构建的统一规范。
2、拥有了统一的规范,那么构建项目就能够精准的定位。

二、依赖范围

Maven提供了六种依赖的范围:compile,test,provided,runtime、system、import。其中compile是默认的依赖范围
1)compile
编译依赖范围
。使用该范围的依赖,对编译、测试、运行三种 classpath 都有效
2)test
测试依赖范围
。使用该范围的依赖只对测试 classpath 有效,在编译主代码或运行项目的时候,这种依赖是无效的。
3)provided
已提供依赖范围
。使用此范围的依赖,只在编译和测试 classpath 的时候有效,运行项目的时候是无效的。
如 Web 应用中的 servlet-api,编译和测试的时候就需要该依赖,运行的时候,因为容器中自带了 servlet-api,就没必要使用了。如果使用了,反而有可能出现版本不一致的冲突。
4)runtime
运行时依赖范围
。使用该范围的依赖,只对测试和运行的 classpath 有效,但在编译主代码时是无效的。
如 JDBC 驱动实现类,就需要在运行测试和运行主代码时候使用,编译的时候,只需 JDBC 接口就行。
5)system
系统依赖范围
。该范围与 classpath 的关系,同 provided 一样。但是,使用 system 访问时,必须通过 systemPath 元素指定依赖文件的路径。
6)import
导入依赖范围
。该依赖范围不会对三种 classpath 产生实际的影响。它的作用是将其他模块定义好的 dependencyManagement 导入当前 Maven 项目 pom 的 dependencyManagement 中。

三、 依赖传递

例:A依赖B,B依赖C。则A中会含有B,C中的依赖范围为compile的所有jar包。
即:依赖范围为compile的jar包会传递给依赖于该项目的项目

依赖传递原则:

1、路径最短优先原则: 如A依赖B,B依赖C。B,C中含有相同的jar包,则Maven判断B的路径更短,则会导入B中的响应jar包。
2、路径相同先声明原则: 如A依赖B,A依赖C,B,C无依赖关系,Maven 会判断哪个依赖在 pom.xml 中先声明,选择引入先声明的依赖。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值