maven依赖管理

依赖配置:依赖指当前项目运行所需的jar,一个项目可以有多个依赖。

格式:

<!--设置当前工程的所有依赖-->
  <dependencies>
<!--      具体的依赖-->
      <dependency>
<!--          依赖所属群组id-->
          <groupId>junit</groupId>
<!--          依赖所属项目id-->
          <artifactId>junit</artifactId>
<!--          版本号-->
          <version>4.12</version>
          <scope>test</scope>
      </dependency>
  </dependencies>

 依赖传递

依赖传递是指一个项目所依赖的jar包或其他项目有其所依赖的jar包或项目,则该项目可以使用其所依赖的jar包或其他项目有其所依赖的jar包或项目并可以向下追溯,这些jar包或项目为该项目的间接依赖。

 依赖具有传递性:

        直接依赖:在当前项目中通过依赖配置建立的项目关系。

        间接依赖:被依赖的资源如果依赖其它资源,当前项目间接依赖其他资源。

        (直接依赖和间接依赖是相对概念。)

依赖传递所存在的问题:

        如果当前项目与其所依赖的jar包或项目依赖同一个资源,但版本不同。如此会使用那个资源?

        路径优先:当依赖中出现相同资源时,层级越深,优先级越低,层级越浅,优先级越高。

        声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。(间接依赖)

        特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。(直接依赖)

 可选依赖:指对外隐藏当前所依赖的资源——不透明。(即当有项目将当前项目作为依赖时,当前项目的可选依赖将不显示,但仍作为该项目的简介依赖。)

        方式:在相应的<dependency>标签中添加<optional>标签,值为true。记得要删除版本号<version>。

<!--      具体的依赖-->
      <dependency>
<!--          依赖所属群组id-->
          <groupId>junit</groupId>
<!--          依赖所属项目id-->
          <artifactId>junit</artifactId>
          <optional>true</optional>
          <scope>test</scope>
      </dependency>

排除依赖:指主动断开所依赖的资源,被排除的资源无需指定版本——不需要(若A项目依赖B项目,B项目依赖junit包,则A项目可以主动断开A项目与junit包的间接依赖关系。)

        方式:在配置项目依赖的<dependency>标签中添加 <exclusions> <exclusion> <groupId>???</groupId> <artifactId>???</artifactId> </exclusion> </exclusions>。

<dependency>
  <groupId>com.itheima</groupId>
  <!--    项目id-->
  <artifactId>web01</artifactId>
  <!--    版本号:release(完成版),snapahot(开发版)-->
  <version>1.0-SNAPSHOT</version>
  <exclusions>
    <exclusion>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </exclusion>
  </exclusions>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值