6.maven中的依赖

六.依赖

1.什么是依赖

在使用Maven工程的时候,工程中会存在一些依赖关系

相当于IDEA中的dependencies配置

可能依赖的是第三方jar包,也可能依赖的是另一个Maven工程

我们需要对这些依赖进行配置

根据配置找到对应的资源

查找顺序:本地仓库–>远程仓库

2.依赖的配置

依赖在pom.xml中进行配置

  • dependencies标签
    • 所有依赖配置的父标签
    • 配置当前工程中所需要的的所有的依赖
  • dependency标签
    • 配置电气概念Maven工程所需要的某一个依赖
    • 一个dependency标签对应一个依赖的配置
    • 其存在一些子标签
      • groupId:组织机构
      • artifactId:模块名称
      • version:版本号
      • scope:作用范围

3.scope值

scope标签表示当前依赖的作用范围,其值有五种

  • compile

    • 默认值,当没有配置scope的时候,默认使用compile
    • 表示当前依赖对整个项目都生效
    • 在编译、运行、测试时均有效
  • test

    • 测试作用域
    • 表示当前依赖只对测试程序有效
  • provided

    • 表示当前依赖对整个项目都生效
    • 但是该作用范围中的依赖不参与打包与部署
    • 在编译、测试时有效,但是在运行时无效
  • runtime

    • 运行时所依赖
    • 在运行、测试时生效,但是在编译时无效
  • system

    • 在编译、测试时有效,但是在运行时无效
    • 与provided的区别在于
      • 使用system范围的依赖必须通过systemPath指定依赖文件的路径
      • 由于这种类型的依赖不是通过Maven仓库解析的,而是与本机系统绑定
      • 可能造成构建的不可移植
    • 因此,该方式不建议使用
    <scope>system</scope>
    <systemPath>${java.home}/lib/rt.jar</systemPath>
    

4.依赖的特性

  • 依赖的传递性
    • 当前Maven工程的依赖如果存在其他依赖
    • 会在当前工程中自动下载其对应的依赖
    • 如果依赖的范围是test,则不需要下载
  • 最短距离依赖
    • 当当前工程与依赖的工程均包含某个依赖的时候
    • 则不会再去下载依赖的工程的某个依赖
    • 而是直接使用当前工程的依赖
    • 如果存在多种依赖管理
      • 例如:HelloFriend依赖于Hello,HelloThree依赖于HelloFriend
      • 此时Hello中存在junit4.11,HelloFriend中存在junit4.12
      • 由于HelloFriend距离HelloThree最近,因此选择HelloFriend中的junit4.12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值