maven--依赖管理

1. 依赖配置

  • 依赖指当前项目运行所需的jar包,一个项目可以设置多个依赖
  • 格式:
<!--设置当前项目所依赖的所有jar-->
<dependencies>
   <!-- 设置具体的依赖 -->
   <dependency>
      <!--依赖所属群组id-->
      <groupId>junit</groupId>
      <!--依赖所属项目id-->
      <artifactId>junit</artifactId>
      <!--依赖版本号 -->
      <version>4.12</version>
   </dependency>
</dependencies>

2. 依赖传递

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
      project03的依赖 – 直接依赖junit和log4j
      <!--设置当前项目所依赖的所有jar-->
      <dependencies>
        <!-- 设置具体的依赖 -->
        <dependency>
          <!--依赖所属群组id-->
          <groupId>junit</groupId>
          <!--依赖所属项目id-->
          <artifactId>junit</artifactId>
          <!--依赖版本号 -->
          <version>4.12</version>
       </dependency>
       <dependency> 
          <groupId>log4j</groupId>
           <artifactId>log4j</artifactId>
            <version>1.2.14</version> 
      </dependencies>
      
      
    • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
      project02的依赖 – 直接依赖project03和log4j的1.2.13版本,通过project03间接依赖junit和log4j的1.2.14版本
      <dependencies> 
        <dependency> 
          <groupId>log4j</groupId> 
          <artifactId>log4j</artifactId> 
          <version>1.2.13</version>
        </dependency> 
      
        <dependency> 
          <groupId>com.itheima</groupId> 
          <artifactId>project03</artifactId> 
          <version>1.0-SNAPSHOT</version> 
        </dependency> 
      </dependencies>
      

在这里插入图片描述

依赖传递冲突问题

  • 路径优先 : 当依赖中岀现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先 : 当资源在相冋层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

在这里插入图片描述

3. 可选依赖

可选依赖指对外隐藏当前所依赖的资源—不透明,其他项目引用该项目为依赖时无法看到该项目的依赖
通过<optional>true</optional>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>

<optional>true</optional>

</dependency>

4. 排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本—不需要,添加的依赖中有间接依赖不需要,排除
通过<exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>

<exclusions>
  <exclusion>
    <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-core</artifactId>
  </exclusion>
</exclusions>

</dependency>

5. 依赖范围

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

  • 作用范围
    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包( package指令范围内)

scope的值:

scope主程序测试程序打包范例
compile( 默认)YYYlog4j
testYjunit
providedYYservlet-api
runtimeYjdbc

依赖范围传递性

  • 带有依赖范围的资源在进行传递时,作用范围将受到影响
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值